Comment puis-je exécuter uniquement l'instruction sur laquelle se trouve mon curseur dans SQL Server Management Studio?

94

En tant qu'utilisateur de Toad for Oracle depuis longtemps, je me suis habitué à appuyer sur Ctrl + Entrée et à ne faire exécuter que l'instruction sous le curseur.

Dans SQL Server Management Studio, appuyez sur F5 pour exécuter l'intégralité du script. Pour exécuter uniquement l'instruction actuelle, je dois mettre manuellement en surbrillance l'instruction que je veux, puis appuyer sur F5.

C'est vraiment ennuyeux pour moi. Quelqu'un connaît-il un outil avec un raccourci clavier pour exécuter uniquement l'instruction en cours sur un serveur SQL? Je changerais d'outils uniquement pour cette fonctionnalité.

Remarque: Curieusement, même le Toad gratuit pour SQL Server ne vous permet pas d'exécuter uniquement l'instruction sous le curseur.

JosephStyons
la source
2
Remarque sur votre note: dans TOAD, la touche F9 exécute le groupe d'instructions en cours. Les groupes sont séparés en utilisant le mot-clé "go" (également répondu par "ercan").
crokusek
F9 exécute uniquement l'instruction actuelle dans les versions ultérieures de TOAD (v6.6 ++). Les instructions sont facultativement séparées par des points-virgules. Il est fiable à 95% pour savoir où se termine l'instruction même s'il n'y a pas de point-virgule.
crokusek
1
Dix ans plus tard, c'est toujours un problème. Je viens juste de SQL Developer et je suis choqué de devoir vraiment faire une solution de contournement fastidieuse pour cela, même maintenant. Une solution récente peut-être?
MattSom
1
@MattSom je souhaite!
JosephStyons

Réponses:

37

Vous pouvez extraire ce complément pour SSMS 2012. Placez le curseur dans l'instruction que vous souhaitez exécuter et appuyez sur CTRL+ SHIFT+E

Exécuteur SSMS - https://github.com/devvcat/ssms-executor/releases

Mise à jour: le
projet a été déplacé vers github et le complément réécrit pour prendre en charge SSMS 2014, SSMS 2016. (Auparavant, le projet vivait sur codeplex, sur SSMS Executor - http://ssmsexecutor.codeplex.com/ .)

Stanislav Stoyanov
la source
2
Cela a très bien fonctionné pour moi dans SSMS2012, mais maintenant j'utilise SSMS2014 et ça me manque vraiment ! Quelqu'un connaît-il une solution SSMS2014?
samp
3
Salut samp, je retravaille l'outil pour SSMS2014. Vous fera savoir quand vous êtes prêt.
Stanislav Stoyanov
1
@ st.stoqnov - J'adorerais utiliser ce complément, mais nous exécutons SSMS 2013. Quand prévoyez-vous de prendre en charge cette version? Merci
namford
1
Bonjour @namford, le projet a été déplacé vers github et le complément a été réécrit pour prendre en charge SSMS 2014/2016.
Stanislav Stoyanov le
1
@StanislavStoyanov Veuillez modifier la question pour mentionner que vous êtes l'auteur du projet que vous recommandez.
jpaugh
34

Utilisez Ctrl+ KUpour sélectionner une ligne. Ensuite, utilisez F5pour l'exécuter.

Bien que cela ne fonctionne que pour la sélection d'une seule ligne, je le trouve toujours très utile.

J'espère que ça aide!!

poussière
la source
2
Hé c'est pratique, pour une doublure. Merci
JosephStyons
Ou ça et CTRL E
Hugh Seagraves
CTRL-E a exécuté le script entier dans le fichier dans SSMS 18.5
Alexander
20

Ok, donc ce que j'obtiens de toutes ces réponses est "Non, ce n'est pas possible."

Éditer:

Voici comment j'ai pu faire cela:

1 - Télécharger SQL Developer

2 - Téléchargez le pilote jTDS

3 - Suivez ces instructions pour ajouter ce pilote à SQL Developer

4 - Connectez-vous à SQL Server en utilisant SQL Developer (cool!)

5 - Exécutez-le et la vie est belle

JosephStyons
la source
3
Je ne sais pas comment cela peut être considéré comme la réponse car ils sont tous basés sur des outils Oracle. La question était liée à SSMS
Jacques
2
DBeaver autorise également cette requête entre; ; exécution. Et c'est beaucoup plus de puissance que SQL Developer
Dima Fomin
@Jacques L'exécution sur une seule ligne est la seule fonctionnalité qu'Oracle a réussi, et Microsoft ne l'a pas fait. Tout le reste de SQL Developer est sous-pair, mais il ne l' intégration avec les serveurs MS SQL.
jpaugh
@Jacques car ce n'est pas facile de faire travailler dans SSMS, je suis content qu'il y ait cette réponse et pour moi celle-ci semble être la meilleure (typiquement mes requêtes ne sont pas one-liners, je ne préfère pas écrire des requêtes complexes en une ligne juste pour faire fonctionner CTRL + KU ...)
Betlista
9

Quelqu'un a suggéré cette fonctionnalité sur Devart dbForge SQL Complete (addon pour Management Studio), et il est encore en phase de développement. Espérons qu'il soit terminé et qu'il ne soit pas abandonné à mi-chemin du développement.

Salamandre2007
la source
2
Je viens d'installer la version gratuite pour Sqlserver14 (?) Et cela semble fonctionner. [Page Devart] ( devart.com/dbforge/sql/sqlcomplete/editions.html )
LosManos
Je l'ai utilisé jusqu'à présent ... maintenant, il s'affiche à chaque fois que je lance Visual Studio.
PAS
6

Remarque: Curieusement, même le Toad gratuit pour SQL Server ne vous permet pas d'exécuter uniquement l'instruction sous le curseur.

C'est vraiment ennuyeux que TOAD ne tienne pas ce qu'il promet:

De l'aide TOAD: [F9 pour exécuter] une partie d'une instruction, qui peut contenir une ou plusieurs instructions. Vous pouvez sélectionner la partie de l'instruction en plaçant le curseur à l'intérieur ou à côté de l'instruction, ou en sélectionnant l'instruction. Remarque: Toad considère comme "adjacentes" toutes les instructions (y compris les commentaires) séparées du curseur ou l'une de l'autre par moins de deux lignes vides. Si une erreur se produit pendant l'exécution de l'instruction, un message d'erreur s'affiche, vous permettant d'ignorer l'erreur et de continuer ou d'interrompre l'exécution.

Je l'ai essayé des millions de fois mais il exécute simplement tout le script. Je voulais le rechercher dans le groupe de support utilisateur (toadss (at) yahoogroups.com) mais Yahoo a la fonction de recherche la plus stupide qui soit! Il ne trouve même pas le mot-clé "crapaud" dans le groupe de messagerie de crapaud, DOH!

Je pense que TOAD est le meilleur outil d'interrogation de tous les temps, mais l'absence de cette fonctionnalité m'ennuie vraiment aussi.

MISE À JOUR: SOLUTION TROUVÉE! J'ai posé ce problème dans le groupe de messagerie toadss et j'ai obtenu la réponse. Contrairement à Oracle, vous devez séparer les instructions dans SQL Server avec le mot-clé GO après chaque instruction. Uniquement si vous faites cela, le bouton F9 fonctionne comme prévu, exécutant l'instruction en cours.

Ercan
la source
6

La réponse ci-dessus m'a aidé à créer un raccourci pour exécuter l'instruction actuelle sans sélectionner la requête

1 - Cliquez sur Outils > Options > Environnement > Clavier

2 - Pour les commandes Show contenant, définissez-le sur SqlComplete10.Common_ExecuteCurrentStatement

3 - Pour Utiliser un nouveau raccourci dans, définissez-le sur Éditeur de requête SQL

4 - Pour Appuyez sur les touches de raccourci (touche de raccourci souhaitée), effectuez la combinaison Ctrl-Entrée.

5 - Cliquez sur Attribuer . Cliquez sur OK.

Galla Balaji
la source
Cela fait l'affaire, mais j'ai d'abord dû supprimer le raccourci d'une autre commande, sinon cela ne fonctionnerait tout simplement pas.
janvier
Comment as-tu fais ça? Lorsque je suis les instructions ci-dessus, ctl-enter met simplement en évidence la ligne (notez que mes requêtes sont sur plusieurs lignes).
user441521
Semble désuet.
Ali Karaca le
@Matt J'ai trouvé quelque chose lorsque j'ai recherché "Exécuter", à savoir Tools.ExecuteStatement, qui ne fonctionne que lorsque je change son raccourci en Global.
jpaugh
@Matt Non! Il s'avère que cela a été ajouté par ce plugin , qui a finalement commencé à fonctionner.
jpaugh
4

J'utilise une solution de contournement: je commente les requêtes que je n'utilise pas. Vous pouvez utiliser CTRL-K, CTRL-C pour commenter le SQL que vous avez mis en évidence. Utilisez CTRL-K, CTRL-U pour décommenter. De cette façon, vous pouvez commenter toutes les autres requêtes et exécuter celle qui vous intéresse avec F5.

Andomar
la source
7
C'est une douleur totale dans le cul. Pourquoi un éditeur SQL devrait-il me faire commenter tout ce que je ne veux pas? Est-ce que je ne peux pas simplement déclarer positivement "exécuter cette commande unique" sans saisir la souris ou appuyer 35 fois sur "Maj + Haut"?
JosephStyons
3
Juste pour clarifier, merci pour la réponse; Je vous en suis reconnaissant. Je suis vraiment en train de me plaindre de l'interface SQL Server Mgmt Studio.
JosephStyons
1
Si vous trouvez un meilleur moyen, assurez-vous de le poster ici :)
Andomar
4

J'ai utilisé ce travail autour; quand le code n'est pas commenté

Ctrl + K + U

(cette commande met en évidence la ligne de requête actuelle) puis

Ctrl + E

(cette exécution de la requête en surbrillance).

C'est utile lorsque vous souhaitez exécuter une requête sur une seule ligne entre d'autres lignes comme:

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

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

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

Je ne pense pas que cela soit possible en utilisant uniquement le studio de gestion. MAIS vous pouvez utiliser un logiciel de raccourcis clavier (par exemple http://www.autohotkey.com/ ) pour enregistrer une séquence spéciale et l'attribuer à une touche de raccourci. Dans votre cas, vous avez besoin de:

<home><shift-end><F5>

Cela sélectionnera la ligne actuelle et l'exécutera.

DmitryK
la source
8
Cependant, cela ne sélectionnera pas l'intégralité du bloc actuel (multiligne).
tbone
2

Dans Toad pour SQL Server, les raccourcis clavier par défaut suivants peuvent être utilisés pour l'exécution:

  • F5: exécuter toutes les instructions SQL dans l'éditeur
  • F9: Exécuter l'instruction SQL à la position actuelle du curseur
  • Shift-F9: Exécute toutes les instructions SQL à partir du curseur, y compris le courant à la position du curseur

Cependant, comme 'ercan' l'a écrit, vous devez séparer / suivre chaque instruction avec 'GO'.

SELECT TOP 5 * FROM accounts
GO

SELECT TOP 5 * FROM users
GO

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

Si c'est le fait de devoir déplacer votre main sur la partie de la souris qui vous dérange, vous pouvez maintenir la touche Ctrl enfoncée tout en appuyant sur une touche fléchée haut ou bas pour sélectionner une ligne à la fois.

Joël Coehoorn
la source
6
Vous voulez dire Shift, oui? Et c'est fastidieux pour les déclarations plus importantes. Merci pour l'idée cependant.
JosephStyons
1

Hit Ctrl- Ependant que le texte est mis en surbrillance.

Chris McCall
la source
9
Ok, mais je dois encore mettre en évidence manuellement ce que je veux. Mon véritable objectif est de pouvoir taper une instruction, puis appuyer sur une touche qui exécutera exactement ce qui se trouve sous le curseur.
JosephStyons
7
pour moi, F5 est plus facile à frapper tandis que le texte est mis en surbrillance puis "CTRL-E".
KM.
1

L'édition SQL Complete Express a cela intégré. Mais vous ne l'obtiendrez pas sans l'intellisense personnalisé.

(J'ai eu ça du post de Salamander2007)

Shorin
la source
3
Sans nous dire comment faire, ce n'est pas très utile
G-.
1

Si la solution complémentaire de l'exécuteur (dans la première réponse publiée) ne fonctionne pas correctement, je l'ai fait fonctionner pour moi (SSMS v17.8.1): L'add-on ajoute une commande sous outils: Outils> Exécuter l'instruction interne .

Vous pouvez lui attribuer une touche de raccourci clavier personnalisée en allant dans Outils> Options> Clavier, puis en recherchant «exécuter» dans «Afficher les commandes contenant:» et en sélectionnant Tools.ExecuteInnerStatement . Ensuite, attribuez simplement la ou les touches de votre choix dans le champ «Appuyez sur les touches de raccourci:» et appuyez sur le bouton Attribuer.

inouttennis2314
la source
1

Cette fonctionnalité est présente dans le complément SSMSBoost pour SSMS (je suis le développeur de ce complément):

Shift-F5 sélectionnera l'instruction courante (ce qui vous permet de revoir ce que vous allez exécuter actuellement). Ensuite, vous appuyez sur F5 et l'exécutez.

Andrei Rantsevich
la source
0

vous pouvez toujours utiliser les outils de ligne de commande sqlcmd et osql. J'ai fait beaucoup de sybase sur la ligne de commande unix en utilisant une fonction wrapper qui a passé ma chaîne de commande dans l'équivalent (ce que je pense être isql?). J'avais l'habitude de vi, alors peut-être que j'étais juste fou alors ;-)

KM.
la source
En fait, cela n'aidera pas. SQLCMD n'enverra pas la commande à SQL Server tant que le lot n'est pas terminé. (Normalement indiqué avec GO.)
Shannon Severance
0

Sélectionnez (mettez en surbrillance) la seule instruction que vous souhaitez exécuter et appuyez sur F5.

JE
la source
2
De la question: Pour exécuter uniquement l'instruction actuelle, je dois mettre en surbrillance manuellement l'instruction que je veux, puis appuyer sur F5.
Paul McCarthy
1
un peu comme, sortez de votre voiture et tournez les pneus avant pour pointer dans la direction où vous voulez aller et appuyez sur l'accélérateur ....
pcnate
0

Vous pouvez combiner les deux outils comme suit: SQL Complete de dbForce et AuhotHotkey.

Avec SQL Complete: vous pouvez exécuter l'instruction courante au niveau du curseur, en appuyant sur la combinaison Ctrl Shift E

La raison pour laquelle j'ai utilisé AutoHotkey est de vous faciliter la vie :-) en utilisant simplement F6 pour exécuter l'instruction actuelle, en définissant le code suivant dans le script AutoHotkey:

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

Et voilà, vous pouvez exécuter n'importe quelle instruction courante au niveau du curseur en appuyant simplement sur F6

Mais parfois, encore une fois, mon gros problème est que j'appuie par erreur sur F5 au lieu de F6: D

Croix bleue
la source
0

L'extension SQL Prompt de Redgate pour SSMS peut le faire.

Ce n'est pas gratuit, mais d'après mon expérience, cela en vaut la peine. Une meilleure intelligence que la version SSMS prête à l'emploi, la coloration des onglets, l'historique des onglets (si précieux!), Des extraits de code, une exécution d'une seule instruction (pas seulement une seule ligne), et bien plus encore.

Matt Laxton
la source
0

Pour exécuter uniquement une section d'un script plus volumineux, essayez ceci.

Pas:

  1. Réduisez l'instruction SQL que vous souhaitez exécuter en cliquant sur le signe moins dans la marge gauche en regard de l'instruction. Cela affichera uniquement la première ligne (avec des points de suspension "..." pour indiquer plus de code non affiché) et la fin ";" pour la déclaration.

  2. Mettez la ligne en surbrillance.

  3. Appuyez sur la touche [F5].

Cela exécutera uniquement l'instruction mise en évidence. Si vous voulez exécuter plus d'une instruction à la fois, réduisez chaque instruction et mettez en surbrillance tout ce que vous voulez exécuter, puis cliquez sur [F5]. C'est une solution de rechange, mais toujours beaucoup plus facile que de devoir faire glisser et mettre en évidence de nombreuses lignes de code à chaque fois.

Tim Farrar
la source
0

Pour ce faire, le moyen le plus simple consiste à attribuer une combinaison CTRL+ Enterpour l'action RequêteSQL Server Management Studio .

  1. Ouvrez le Tools > Optionsmenu.
  2. Sélectionnez la Environment > Keyboardpage dans le volet gauche.
  3. Trouvez une Query.Executeaction et sélectionnez-la.
  4. Définir SQL Query Editordans "Use new shortcut in:"la liste déroulante.
  5. Saisissez maintenant la CTRL + Entercombinaison dans la press shortcut keys:zone de texte.
  6. Cliquez sur le Assignbouton.
  7. Changer Shortcut currently used by:pourQuery.Execute (Ctrl+Enter (SQL Query Editor))
  8. Cliquez sur OK. Done.
Abdullah Ilgaz
la source
Pour exécuter uniquement la ligne courante, sélectionnez toute la ligne à la fin de la ligne avec Maj + Origine puis exécutez Ctrl + Entrée.
Abdullah Ilgaz
0

Essayez de définir une macro dans SSMSBoost SSMSBoost / Paramètres / Macros:

Sélectionnez l'emplacement libre pour votre macro dans la légende de remplissage du panneau de droite (si vous le souhaitez), ajoutez 2 commandes à la séquence: SSMSBoost.SelectCurrentStatement Query.Execute attribue votre raccourci favori et c'est tout.

Gern
la source
-1

Ce qui suit fonctionne pour moi ... J'utilise SSMS 2012

1 - Cliquez sur Outils> Options> Clavier d'environnement

2 - Pour Afficher les commandes contenant , définissez-le sur Requête.

3 - Pour Utiliser un nouveau raccourci dans , définissez-le sur Éditeur de requête SQL

4 - Pour Appuyez sur les touches de raccourci , effectuez la combinaison Ctrl-Entrée.

5 - Cliquez sur Attribuer. Cliquez sur OK.

BGA
la source
Cela fait tout le script - je veux juste la déclaration sous le curseur.
JosephStyons
Tout de suite, désolé j'ai mal compris la question.
BGA