¿Cómo puedo ejecutar solo la instrucción en la que se encuentra el cursor en SQL Server Management Studio?

93

Como usuario de Toad for Oracle desde hace mucho tiempo, me he acostumbrado a presionar Ctrl + Enter y ejecutar solo la instrucción debajo del cursor.

En SQL Server Management Studio, presionar F5 ejecuta todo el script. Para ejecutar solo la declaración actual, tengo que resaltar manualmente la declaración que quiero y luego presionar F5.

Eso me molesta mucho. ¿Alguien sabe de una herramienta con un atajo de teclado para ejecutar solo la declaración actual en un servidor SQL? Cambiaría herramientas solo para esta característica.

Nota: Curiosamente, incluso el Toad gratuito para SQL Server no le permite ejecutar solo la instrucción debajo del cursor.

JosephStyons
fuente
2
Nota en su nota: En TOAD, la tecla F9 ejecuta el grupo de sentencias actuales. Los grupos se separan usando la palabra clave "go" (también respondida por "ercan").
crokusek
F9 ejecuta solo la declaración actual en las versiones posteriores de TOAD (v6.6 ++). Las declaraciones se pueden separar opcionalmente con punto y coma. Es 95% confiable al poder saber dónde termina la declaración incluso cuando no hay punto y coma.
crokusek
1
Diez años después, esto sigue siendo un problema. Vengo de SQL Developer y estoy sorprendido de que realmente debería hacer una tediosa solución para esto incluso ahora. ¿Alguna solución reciente quizás?
MattSom
1
@MattSom ¡Ojalá!
JosephStyons

Respuestas:

37

Puede consultar este complemento para SSMS 2012. Coloque el cursor dentro de la instrucción que desea ejecutar y presione CTRL+ SHIFT+E

Ejecutor SSMS - https://github.com/devvcat/ssms-executor/releases

Actualización: el
proyecto se movió a github y el complemento se volvió a escribir para admitir SSMS 2014, SSMS 2016. (Anteriormente, el proyecto vivía en codeplex, en SSMS Executor - http://ssmsexecutor.codeplex.com/ ).

Stanislav Stoyanov
fuente
2
Esto funcionó muy bien para mí en SSMS2012, pero ahora estoy ejecutando SSMS2014 y realmente lo extraño. ¿Alguien sabe de una solución SSMS2014?
samp
3
Hola samp , estoy reelaborando la herramienta para SSMS2014. Le avisará cuando esté listo.
Stanislav Stoyanov
1
@ st.stoqnov - Me encantaría usar este complemento, pero estamos ejecutando SSMS 2013. ¿Cuándo planea admitir esta versión? Gracias
namford
1
Hola @namford, el proyecto se movió a github y el complemento se reescribió para admitir SSMS 2014/2016.
Stanislav Stoyanov
1
@StanislavStoyanov Edite la pregunta para mencionar que usted es el autor del proyecto que está recomendando.
jpaugh
34

Use Ctrl+ KUpara seleccionar una línea. Luego usa F5para ejecutarlo.

Aunque solo funciona para la selección de una sola línea, lo encuentro bastante útil.

¡¡Espero eso ayude!!

polvo
fuente
1
Oye, eso es útil, para una sola línea. Gracias
JosephStyons
O eso y CTRL E
Hugh Seagraves
CTRL-E ejecutó todo el script en el archivo en SSMS 18.5
Alexander
20

Bien, lo que obtengo de todas estas respuestas es "No, eso no es posible".

Editar:

Así es como pude hacer esto:

1 - Descarga SQL Developer

2 - Descargue el controlador jTDS

3 - Siga estas instrucciones para agregar ese controlador a SQL Developer

4 - Conéctese a SQL Server usando SQL Developer (¡genial!)

5 - Ejecútalo y la vida es buena

JosephStyons
fuente
3
No estoy seguro de cómo se puede considerar esto como la respuesta porque todos se basan en herramientas de Oracle. La pregunta estaba relacionada con SSMS
Jacques
2
DBeaver también permite esta consulta entre; ; ejecución. Y es mucho más potente que SQL Developer
Dima Fomin
@Jacques La ejecución de una sola línea es la única característica que Oracle acertó y Microsoft no. Todo lo demás de SQL Developer es malísimo, pero no se integra con servidores MS SQL.
jpaugh
@Jacques, ya que esto no es fácil de hacer que funcione en SSMS, estoy feliz de que haya esta respuesta y para mí esta parece ser la mejor (generalmente mis consultas no son de una sola línea, no prefiero escribir consultas complejas en una línea solo para que CTRL + KU funcione ...)
Betlista
9

Alguien sugirió estas características en Devart dbForge SQL Complete (complemento para Management Studio), y todavía está en la etapa de desarrollo. Esperemos que esté terminado y no se abandone a la mitad del desarrollo.

Salamandra 2007
fuente
2
Acabo de instalar la versión gratuita para Sqlserver14 (?) Y parece funcionar. [Página de Devart] ( devart.com/dbforge/sql/sqlcomplete/editions.html )
LosManos
Lo usé hasta ahora ... ahora se muestra agregar cada vez que inicio Visual Studio.
PAS
6

Nota: Curiosamente, incluso el Toad gratuito para SQL Server no le permite ejecutar solo la instrucción debajo del cursor.

Es realmente molesto que TOAD no cumpla con lo que promete:

De la ayuda de TOAD: [F9 para ejecutar] una parte de una declaración, que puede contener una o más declaraciones. Puede seleccionar la parte de la declaración colocando el cursor dentro o junto a la declaración, o seleccionando la declaración. Nota: Toad considera "adyacentes" todas las declaraciones (incluidos los comentarios) separadas del cursor o entre sí por menos de dos líneas en blanco. Si ocurre un error durante la ejecución de la declaración, se muestra un mensaje de error que le permite ignorar el error y continuar o abortar la ejecución.

Lo intenté millones de veces, pero simplemente ejecuta todo el script. Quería buscarlo en el grupo de apoyo al usuario (toadss (at) yahoogroups.com), ¡pero yahoo tiene la función de búsqueda más estúpida que existe! ¡Ni siquiera puede encontrar la palabra clave "sapo" en el grupo de correo de sapo, DOH!

Creo que TOAD es la mejor herramienta de consulta que existe, pero la falta de esta función también me molesta.

ACTUALIZACIÓN: ¡SOLUCIÓN ENCONTRADA! Pregunté este problema en el grupo de correo de toadss y obtuve la respuesta. A diferencia de Oracle, debe separar las declaraciones en SQL Server con la palabra clave GO después de cada declaración. Solo si lo hace, el botón F9 funciona como se esperaba, ejecutando la declaración actual.

ercan
fuente
6

La respuesta anterior me ayudó a crear un acceso directo para ejecutar la declaración actual sin seleccionar la consulta

1 - Haga clic en Herramientas > Opciones > Entorno > Teclado

2 - Para Mostrar comandos que contienen, configúrelo en SqlComplete10.Common_ExecuteCurrentStatement

3 - Para Usar nuevo acceso directo en, configúrelo en Editor de consultas SQL

4 - Para Presione las teclas de acceso directo (tecla de acceso directo deseada), realice la combinación Ctrl-Enter.

5 - Haga clic en Asignar . Haga clic en Aceptar.

Galla Balaji
fuente
Esto funciona, pero primero tuve que eliminar el acceso directo de otro comando, de lo contrario, simplemente no funcionaría.
Ene
¿Cómo hiciste eso? Cuando sigo las instrucciones anteriores, ctl-enter solo resalta la línea (tenga en cuenta que mis consultas están en varias líneas).
user441521
Parece anticuado.
Ali Karaca
@ Matt Encontré algo cuando busqué "Ejecutar", es decir Tools.ExecuteStatement, que solo funciona cuando cambio su acceso directo a Global.
jpaugh
@ Matt Nope! Resulta que fue agregado por este complemento , que finalmente comenzó a funcionar.
jpaugh
4

Utilizo una solución alternativa: comento consultas que no estoy usando. Puede usar CTRL-K, CTRL-C para comentar el SQL que ha resaltado. Use CTRL-K, CTRL-U para descomentar. De esa manera, puede comentar todas las demás consultas y ejecutar la que le interese con F5.

Andomar
fuente
7
Este es un dolor total en el trasero. ¿Por qué un editor de SQL debería hacerme comentar todo lo que no quiero? ¿No puedo simplemente decir "ejecutar este comando" sin agarrar el mouse o presionar "Shift + Up" 35 veces?
JosephStyons
3
Solo para aclarar, gracias por la respuesta; Lo aprecio. Realmente me estoy quejando de la interfaz de SQL Server Mgmt Studio.
JosephStyons
1
Si encuentra una manera mejor, asegúrese de publicarla aquí :)
Andomar
4

Usé este trabajo alrededor; cuando el código no está comentado

Ctrl + K + U

(este comando resalta la línea de consulta actual) y luego

Ctrl + E

(esta consulta resaltada de ejecución).

Es útil cuando desea ejecutar una consulta de una sola línea entre algunas otras líneas como:

  Select top 100 * from [dbo].[Order]

  Select top 100 * from [dbo].[OrderItem]

  Select top 100 * from [dbo].[OrderStatus]
nzrytmn
fuente
3

No creo que esto sea posible usando solo el estudio de administración. PERO puede usar un software de atajos de teclado (por ejemplo, http://www.autohotkey.com/ ) para tener una secuencia especial grabada y asignada a una tecla de acceso rápido. En tu caso necesitas:

<home><shift-end><F5>

Esto seleccionará la línea actual y la ejecutará.

DmitryK
fuente
8
Sin embargo, esto no seleccionará todo el bloque actual (multilínea).
tbone
2

En Toad para SQL Server, se pueden usar las siguientes teclas de acceso rápido predeterminadas para la ejecución:

  • F5: ejecutar todas las sentencias SQL en el editor
  • F9: ejecutar instrucción SQL en la posición actual del cursor
  • Shift-F9: ejecutar todas las sentencias SQL desde el cursor, incluida la actual en la posición del cursor

Sin embargo, como escribió 'ercan', debe separar / seguir cada declaración con 'GO'.

SELECT TOP 5 * FROM accounts
GO

SELECT TOP 5 * FROM users
GO

SELECT TOP 5 * FROM contracts
GO
Kåre Werner Storgaard
fuente
1

Si lo que le molesta es tener que mover la mano hacia la parte del mouse, puede mantener presionada la tecla Ctrl mientras presiona una tecla de flecha hacia arriba o hacia abajo para seleccionar una línea a la vez.

Joel Coehoorn
fuente
6
¿Te refieres a Shift, sí? Y eso es tedioso para declaraciones más grandes. Aunque gracias por la idea.
JosephStyons
1

Hit Ctrl: Emientras el texto está resaltado.

Chris McCall
fuente
9
Ok, pero todavía tengo que resaltar manualmente lo que quiero. Mi objetivo real es poder escribir una declaración y luego presionar alguna tecla que ejecutará exactamente lo que está debajo del cursor.
JosephStyons
7
para mí, es más fácil presionar F5 mientras el texto está resaltado y luego "CTRL-E".
KM.
1

La edición SQL Complete Express tiene esto incorporado. Pero no lo obtiene sin el intellisense personalizado.

(Obtuve esto de la publicación de Salamander2007)

Shorin
fuente
3
Sin decirnos cómo hacerlo, esto no es muy útil
G-.
1

Si la solución del complemento ejecutor (en la respuesta publicada en la parte superior) no funciona correctamente, lo hice funcionar para mí (SSMS v17.8.1): el complemento agrega un comando en herramientas: Herramientas> Ejecutar declaración interna .

Puede asignarle una tecla de método abreviado de teclado personalizado yendo a Herramientas> Opciones> Teclado, luego busque "ejecutar" en 'Mostrar comandos que contienen:' y seleccionando Tools.ExecuteInnerStatement . Luego, simplemente asigne las pulsaciones de teclas que desee en el campo 'Presione las teclas de método abreviado:' y presione el botón Asignar.

inouttennis2314
fuente
1

Esta característica está presente en el complemento SSMSBoost para SSMS (soy el desarrollador de este complemento):

Shift-F5 seleccionará la declaración actual (que le permite revisar lo que va a ejecutar actualmente). Luego presionas F5 y lo ejecutas.

Andrei Rantsevich
fuente
0

siempre puede utilizar las herramientas de línea de comandos sqlcmd y osql. Hice una gran cantidad de sybase en la línea de comandos de Unix usando una función contenedora que pasaba mi cadena de comando al equivalente (¿que creo que era isql?). Usé vi, así que tal vez estaba loco entonces ;-)

KM.
fuente
De hecho, eso no ayudará. SQLCMD no enviará el comando a SQL Server hasta que finalice el lote. (Normalmente indicado con GO.)
Shannon Severance
0

Simplemente seleccione (resalte) la declaración única que desea ejecutar y presione F5.

JE
fuente
2
De la pregunta: Para ejecutar solo la declaración actual, tengo que resaltar manualmente la declaración que quiero y luego presionar F5.
Paul McCarthy
1
un poco como, simplemente salir de su coche y girar los neumáticos delanteros a punto en la dirección que desea ir y pisa el acelerador ....
pcnate
0

Puede combinar las dos herramientas de la siguiente manera: SQL Complete de dbForce y AuhotHotkey.

Con SQL Complete: puede ejecutar la declaración actual en el cursor, presionando la combinación Ctrl Shift E

La razón por la que utilicé AutoHotkey es para hacer la vida más fácil :-) usando solo F6 para ejecutar la declaración actual, configurando el siguiente código en el script AutoHotkey:

;SQL EXECUTE THE CURRENT STATEMENT
F6::
Send ^+E
return

Y listo, puedes ejecutar cualquier declaración actual en el cursor con solo presionar F6

Pero a veces, nuevamente, mi gran problema es que presiono F5 en lugar de F6: D por error

Cruz Azul
fuente
0

La extensión SQL Prompt de Redgate para SSMS puede hacer esto.

No es gratis, pero en mi experiencia vale la pena tenerlo. Mejor intellisense que la versión de SSMS lista para usar, coloración de pestañas, historial de pestañas (¡tan valioso!), Fragmentos, ejecución de una sola declaración (no solo una línea) y mucho más.

Matt Laxton
fuente
0

Para ejecutar solo una sección de una secuencia de comandos más grande, intente esto ...

Pasos:

  1. Contraiga la declaración SQL que desea ejecutar haciendo clic en el signo menos en el margen izquierdo junto a la declaración. Eso mostrará solo la primera línea (con puntos suspensivos "..." para indicar que no se muestra más código) y la terminación ";" para la declaración.

  2. Resalta la línea.

  3. Presione la tecla [F5].

Eso ejecutará solo la declaración resaltada. Si desea ejecutar más de una declaración a la vez, contraiga cada declaración y resalte todo lo que desea ejecutar, luego haga clic en [F5]. Es una solución alternativa, pero sigue siendo mucho más fácil que tener que arrastrar y resaltar numerosas líneas de código cada vez.

Tim Farrar
fuente
0

La forma más sencilla de hacerlo es la asignación de CTRL+ Entercombinación para la acción Consulta.Ejecutar en SQL Server Management Studio.

  1. Abrir Tools > Optionsmenú.
  2. Seleccione la Environment > Keyboardpágina en el panel izquierdo.
  3. Busque la Query.Executeacción y selecciónela.
  4. Establecer SQL Query Editoren la "Use new shortcut in:"lista desplegable.
  5. Ahora escriba la CTRL + Entercombinación en el press shortcut keys:cuadro de texto.
  6. Haga clic en el Assignbotón.
  7. Cambiar Shortcut currently used by:aQuery.Execute (Ctrl+Enter (SQL Query Editor))
  8. Haga clic en OK. Done.
Abdullah Ilgaz
fuente
Para ejecutar solo la línea actual es seleccionar toda la línea al final de la línea con Shift + Inicio y luego ejecutar Ctrl + Enter.
Abdullah Ilgaz
0

Intente definir macro en SSMSBoost SSMSBoost / Settings / Macros:

Seleccione el espacio libre para su macro en el título de relleno del panel derecho (si lo desea) agregue 2 comandos a la secuencia: SSMSBoost.SelectCurrentStatement Query.Execute, asigne su acceso directo favorito y eso es todo.

Gern
fuente
-1

Lo siguiente funciona para mí ... Yo uso SSMS 2012

1 - Haga clic en Herramientas> Opciones> Teclado de entorno

2 - Para Mostrar comandos que contienen , configúrelo en Consulta.

3 - Para Usar nuevo acceso directo en , configúrelo en Editor de consultas SQL

4 - Para presionar teclas de método abreviado , realice la combinación Ctrl-Enter.

5 - Haga clic en Asignar. Haga clic en Aceptar.

BGA
fuente
Eso hace todo el guión, solo quiero la declaración debajo del cursor.
JosephStyons
Ahora mismo, lo siento, no entendí bien la pregunta.
BGA