Wie kann ich nur die Anweisung ausführen, auf der sich mein Cursor in SQL Server Management Studio befindet?

91

Als langjähriger Toad for Oracle-Benutzer habe ich mich daran gewöhnt, Strg + Eingabetaste zu drücken und nur die Anweisung unter dem Cursor ausführen zu lassen.

Wenn Sie in SQL Server Management Studio F5 drücken, wird das gesamte Skript ausgeführt. Um nur die aktuelle Anweisung auszuführen, muss ich die gewünschte Anweisung manuell markieren und dann F5 drücken.

Das nervt mich wirklich. Kennt jemand ein Tool mit einer Tastenkombination, mit dem nur die aktuelle Anweisung auf einem SQL Server ausgeführt werden kann? Ich würde die Werkzeuge nur für diese eine Funktion ändern.

Hinweis: Seltsamerweise können Sie selbst mit der kostenlosen Toad for SQL Server nicht nur die Anweisung unter dem Cursor ausführen.

JosephStyons
quelle
2
Hinweis zu Ihrem Hinweis: In TOAD führt die Taste F9 die aktuelle Anweisungsgruppe aus. Gruppen werden mit dem Schlüsselwort "go" getrennt (auch mit "ercan" beantwortet).
Crokusek
F9 führt nur die aktuelle Anweisung in den späteren Versionen von TOAD (v6.6 ++) aus. Anweisungen werden optional durch Semikolons getrennt. Es ist zu 95% vertrauenswürdig, zu wissen, wo die Anweisung endet, auch wenn kein Semikolon vorhanden ist.
Crokusek
1
Zehn Jahre später ist dies immer noch ein Problem. Ich komme gerade von SQL Developer und bin schockiert, dass ich auch jetzt noch eine mühsame Lösung finden sollte. Irgendeine neuere Lösung vielleicht?
MattSom
1
@ MattSom Ich wünschte!
JosephStyons

Antworten:

37

Sie können dieses Add-In für SSMS 2012 auschecken. Platzieren Sie den Cursor innerhalb der Anweisung, die Sie ausführen möchten, und drücken Sie CTRL+ SHIFT+E

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

Update: Das
Projekt wurde auf github verschoben und das Add-In neu geschrieben, um SSMS 2014, SSMS 2016, zu unterstützen. (Zuvor lebte das Projekt auf Codeplex unter SSMS Executor - http://ssmsexecutor.codeplex.com/ .)

Stanislav Stoyanov
quelle
2
Das hat in SSMS2012 sehr gut funktioniert, aber jetzt verwende ich SSMS2014 und ich vermisse es wirklich ! Kennt jemand eine SSMS2014-Lösung?
Samp
3
Hallo Samp, ich überarbeite das Tool für SSMS2014. Lassen Sie es Sie wissen, wenn Sie bereit sind.
Stanislav Stoyanov
1
@ st.stoqnov - Ich würde dieses Add-In gerne verwenden, aber wir führen SSMS 2013 aus. Wann planen Sie, diese Version zu unterstützen? Vielen Dank
Namford
1
Hallo @namford, das Projekt wurde nach Github verschoben und das Add-In neu geschrieben, um SSMS 2014/2016 zu unterstützen.
Stanislav Stoyanov
1
@StanislavStoyanov Bitte bearbeiten Sie die Frage, um zu erwähnen, dass Sie der Autor des von Ihnen empfohlenen Projekts sind.
Jpaugh
34

Verwenden Sie Ctrl+ KU, um eine Zeile auszuwählen. Dann verwenden Sie F5, um es auszuführen.

Obwohl es nur für die Auswahl einzelner Zeilen funktioniert, finde ich es dennoch sehr nützlich.

Ich hoffe es hilft!!

Staub
quelle
1
Hey, das ist praktisch, für einen Liner. Vielen Dank
JosephStyons
Oder das und CTRL E
Hugh Seagraves
STRG-E hat das gesamte Skript in der Datei in SSMS 18.5
Alexander
19

Ok, was ich von all diesen Antworten bekomme, ist "Nein, das ist nicht möglich."

Bearbeiten:

So konnte ich das machen:

1 - Laden Sie SQL Developer herunter

2 - Laden Sie den jTDS-Treiber herunter

3 - Befolgen Sie diese Anweisungen , um diesen Treiber zu SQL Developer hinzuzufügen

4 - Stellen Sie mit SQL Developer eine Verbindung zu SQL Server her (cool!)

5 - Führen Sie es und das Leben ist gut

JosephStyons
quelle
3
Ich bin mir nicht sicher, wie dies als Antwort angesehen werden kann, da alle auf Oracle-Tools basieren. Die Frage bezog sich auf SSMS
Jacques
2
DBeaver erlaubt diese Abfrage auch zwischen; ;; Ausführung. Und es ist viel mehr Leistung als SQL Developer
Dima Fomin
@Jacques Die einzeilige Ausführung ist die einzige Funktion, die Oracle richtig gemacht hat, und Microsoft nicht. Alles andere über SQL Developer ist sub-par, aber es funktioniert mit MS SQL - Server zu integrieren.
Jpaugh
@Jacques, da es nicht einfach ist, in SSMS zu arbeiten, bin ich froh, dass es diese Antwort gibt, und für mich scheint diese die beste zu sein (normalerweise sind meine Abfragen keine Einzeiler, ich schreibe keine komplexen Abfragen lieber in eine Zeile, damit STRG + KU funktioniert ...)
Betlista
9

Jemand hat diese Funktion in Devart dbForge SQL Complete (Addon für Management Studio) vorgeschlagen und befindet sich noch in der Entwicklungsphase. Hoffen wir, dass es fertig ist und nicht in der Mitte der Entwicklung aufgegeben wird.

Salamander2007
quelle
2
Ich habe gerade die kostenlose Version für Sqlserver14 (?) Installiert und es scheint zu funktionieren. [Devart Seite] ( devart.com/dbforge/sql/sqlcomplete/editions.html )
LosManos
Ich habe es bis jetzt benutzt ... jetzt wird es jedes Mal angezeigt, wenn ich Visual Studio starte.
PAS
6

Hinweis: Seltsamerweise können Sie selbst mit der kostenlosen Toad for SQL Server nicht nur die Anweisung unter dem Cursor ausführen.

Es ist wirklich ärgerlich, dass TOAD nicht hält, was es verspricht:

Von der TOAD-Hilfe: [F9 ausführen] einen Teil einer Anweisung, der eine oder mehrere Anweisungen enthalten kann. Sie können den Teil der Anweisung auswählen, indem Sie den Cursor innerhalb oder neben der Anweisung platzieren oder die Anweisung auswählen. Hinweis: Toad betrachtet alle Anweisungen (einschließlich Kommentare) als "benachbart", die durch weniger als zwei Leerzeilen vom Cursor oder voneinander getrennt sind. Wenn während der Ausführung der Anweisung ein Fehler auftritt, wird eine Fehlermeldung angezeigt, mit der Sie den Fehler entweder ignorieren und fortsetzen oder die Ausführung abbrechen können.

Ich habe es millionenfach versucht, aber es führt einfach das gesamte Skript aus. Ich wollte in der Benutzer-Support-Gruppe (toadss (at) yahoogroups.com) danach suchen, aber Yahoo hat die dümmste Suchfunktion aller Zeiten! Es kann nicht einmal das Schlüsselwort "toad" in der toad mail group finden, DOH!

Ich denke, TOAD ist das beste Abfragetool aller Zeiten, aber das Fehlen dieser Funktion nervt mich auch wirklich.

UPDATE: LÖSUNG GEFUNDEN! Ich habe dieses Problem in der Toadss-Mail-Gruppe gestellt und die Antwort erhalten. Im Gegensatz zu Oracle müssen Sie Anweisungen in SQL Server nach jeder Anweisung mit dem Schlüsselwort GO trennen . Nur wenn Sie dies tun, funktioniert die Schaltfläche F9 wie erwartet und führt die aktuelle Anweisung aus.

ercan
quelle
6

Die obige Antwort hat mir geholfen, eine Verknüpfung zum Ausführen der aktuellen Anweisung zu erstellen, ohne die Abfrage auszuwählen

1 - Klicken Sie auf Extras > Optionen > Umgebung > Tastatur

2 - Setzen Sie für Show-Befehle, die enthalten, auf SqlComplete10.Common_ExecuteCurrentStatement

3 - Setzen Sie für Neue Verknüpfung verwenden auf den SQL-Abfrage-Editor

4 - Führen Sie für Drücken der Tastenkombination (gewünschte Tastenkombination) die Kombination Strg-Eingabe aus.

5 - Klicken Sie auf Zuweisen . Klicken Sie auf OK.

Galla Balaji
quelle
Dies macht den Trick, aber ich musste zuerst die Verknüpfung von einem anderen Befehl entfernen, sonst würde es einfach nicht funktionieren.
Januar
Wie hast du das gemacht? Wenn ich den obigen Anweisungen folge, hebt ctl-enter nur die Zeile hervor (beachten Sie, dass sich meine Abfragen in mehreren Zeilen befinden).
user441521
Scheint veraltet zu sein.
Ali Karaca
@Matt Ich habe etwas gefunden, als ich nach "Ausführen" gesucht habe, nämlich Tools.ExecuteStatement, was nur funktioniert, wenn ich die Verknüpfung in "Global" ändere.
Jpaugh
@ Matt Nein! Es stellte sich heraus, dass dieses Plugin hinzugefügt wurde , das endlich zu funktionieren begann.
Jpaugh
4

Ich verwende eine Problemumgehung: Ich kommentiere Abfragen, die ich nicht verwende. Sie können STRG-K, STRG-C verwenden, um das von Ihnen hervorgehobene SQL zu kommentieren. Verwenden Sie STRG-K, STRG-U, um Kommentare zu entfernen. Auf diese Weise können Sie alle anderen Abfragen kommentieren und die gewünschte mit F5 ausführen.

Andomar
quelle
7
Dies ist ein totaler Schmerz im Hintern. Warum sollte ein SQL-Editor mich dazu bringen, alles zu kommentieren, was ich nicht will? Kann ich nicht einfach positiv "diesen einen Befehl ausführen" angeben, ohne die Maus zu greifen oder 35 Mal "Shift + Up" zu drücken?
JosephStyons
3
Nur zur Klarstellung, danke für die Antwort; Ich schätze es. Ich greife wirklich nur nach der SQL Server Mgmt Studio-Oberfläche.
JosephStyons
1
Wenn Sie einen besseren Weg finden, stellen Sie sicher, dass Sie ihn hier
posten
4

Ich habe diese Arbeit benutzt; wenn der Code nicht auskommentiert ist

Strg + K + U.

(Dieser Befehl hebt die aktuelle Abfragezeile hervor) und dann

Strg + E.

(Dieser Lauf hat die Abfrage hervorgehoben).

Dies ist nützlich, wenn Sie eine einzeilige Abfrage zwischen einigen anderen Zeilen ausführen möchten, z.

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

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

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

Ich denke nicht, dass dies nur mit dem Management Studio möglich ist. ABER Sie können eine Tastaturkürzelsoftware (z. B. http://www.autohotkey.com/ ) verwenden, um eine spezielle Sequenz aufzuzeichnen und einem Hotkey zuzuweisen. In Ihrem Fall benötigen Sie:

<home><shift-end><F5>

Dadurch wird die aktuelle Zeile ausgewählt und ausgeführt.

DmitryK
quelle
8
Dies wählt jedoch nicht den gesamten aktuellen (mehrzeiligen) Block aus.
Knochen
2

In Toad for SQL Server können die folgenden Standard-Hotkeys für die Ausführung verwendet werden:

  • F5: Führen Sie alle SQL-Anweisungen im Editor aus
  • F9: SQL-Anweisung an der aktuellen Cursorposition ausführen
  • Umschalt-F9: Alle SQL-Anweisungen vom Cursor ausführen, einschließlich der aktuellen an der Cursorposition

Wie 'ercan' schrieb, müssen Sie jedoch jede Anweisung mit 'GO' trennen / befolgen.

SELECT TOP 5 * FROM accounts
GO

SELECT TOP 5 * FROM users
GO

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

Wenn Sie Ihre Hand zum Mausbereich bewegen müssen, können Sie die Strg-Taste gedrückt halten, während Sie eine Aufwärts- oder Abwärtspfeiltaste drücken, um sofort eine Linie auszuwählen.

Joel Coehoorn
quelle
6
Du meinst Shift, ja? Und das ist mühsam für größere Aussagen. Danke für die Idee.
JosephStyons
1

Treffer Ctrl- Esolange der Text markiert ist.

Chris McCall
quelle
9
Ok, aber ich muss immer noch manuell markieren, was ich will. Mein eigentliches Ziel ist es, eine Anweisung eingeben und dann eine Taste drücken zu können, die genau das ausführt, was sich unter dem Cursor befindet.
JosephStyons
7
Für mich ist F5 leichter zu treffen, wenn der Text markiert ist, als "STRG-E".
KM.
1

In der SQL Complete Express Edition ist dies integriert. Ohne das benutzerdefinierte Intellisense erhalten Sie es jedoch nicht.

(Ich habe das von Salamander2007's Post bekommen)

Shorin
quelle
3
Ohne uns zu sagen, wie es geht, ist dies nicht sehr nützlich
G-.
1

Wenn die Executor-Add-On-Lösung (in der oben angegebenen Antwort) nicht ordnungsgemäß funktioniert, funktioniert sie für mich (SSMS v17.8.1): Das Add-On fügt unter tools einen Befehl hinzu: Tools> Execute Inner Statement .

Sie können ihm eine benutzerdefinierte Tastenkombination zuweisen, indem Sie zu Extras> Optionen> Tastatur gehen und dann unter "Befehle mit folgenden Elementen anzeigen " nach "Ausführen" suchen und " Tools.ExecuteInnerStatement " auswählen . Weisen Sie dann einfach die gewünschten Tastenanschläge im Feld "Tastenkombinationen drücken:" zu und klicken Sie auf die Schaltfläche "Zuweisen".

inouttennis2314
quelle
1

Diese Funktion ist im SSMSBoost- Add-In für SSMS enthalten (ich bin der Entwickler dieses Add-Ins):

Shift-F5 wählt die aktuelle Anweisung aus (mit der Sie überprüfen können, was Sie gerade ausführen werden). Dann drücken Sie F5 und führen es aus.

Andrei Rantsevich
quelle
0

Sie können jederzeit die Befehlszeilentools sqlcmd und osql verwenden. Ich habe viel Sybase in der Unix-Befehlszeile mit einer Wrapper-Funktion ausgeführt, die meine Befehlszeichenfolge an das Äquivalent übergeben hat (was ich für isql halte?). Ich habe vi gewohnt, also war ich damals vielleicht nur verrückt ;-)

KM.
quelle
Eigentlich hilft das nicht. SQLCMD sendet den Befehl erst nach Beendigung des Stapels an SQL Server. (Normalerweise mit GO angegeben.)
Shannon Severance
0

Wählen Sie einfach die einzelne Anweisung aus (markieren Sie sie), die Sie ausführen möchten, und drücken Sie F5.

JE
quelle
2
Aus der Frage: Um nur die aktuelle Anweisung auszuführen, muss ich die gewünschte Anweisung manuell markieren und dann F5 drücken.
Paul McCarthy
1
Ein bisschen wie, steigen Sie einfach aus Ihrem Auto und drehen Sie die Vorderreifen, um in die Richtung zu zeigen, in die Sie gehen möchten, und
drücken
0

Sie können die beiden Tools wie folgt kombinieren: SQL Complete von dbForce und AuhotHotkey.

Mit SQL Complete: Sie können die aktuelle Anweisung am Cursor ausführen, indem Sie die Kombination Strg + Umschalttaste E drücken

Der Grund, warum ich den AutoHotkey verwendet habe, ist, das Leben einfacher zu machen :-) indem ich nur F6 verwende, um die aktuelle Anweisung auszuführen, indem ich den folgenden Code im AutoHotkey-Skript setze:

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

Und voilà Sie können jede aktuelle Anweisung am Cursor ausführen, indem Sie einfach F6 drücken

Aber manchmal ist mein großes Problem wieder, dass ich fälschlicherweise F5 anstelle von F6: D drücke

Blaues Kreuz
quelle
0

Die SQL Prompt-Erweiterung von Redgate für SSMS kann dies tun.

Es ist nicht kostenlos, aber meiner Erfahrung nach lohnt es sich. Bessere Intelligenz als die sofort einsatzbereite SSMS-Version, Tab-Färbung, Tab-Verlauf (so wertvoll!), Snippets, Ausführung einzelner Anweisungen (nicht nur eine einzelne Zeile) und vieles mehr.

Matt Laxton
quelle
0

Versuchen Sie dies, um nur einen Abschnitt eines größeren Skripts auszuführen.

Schritte:

  1. Reduzieren Sie die SQL-Anweisung, die Sie ausführen möchten, indem Sie auf das Minuszeichen am linken Rand neben der Anweisung klicken. Das zeigt nur die erste Zeile (mit einem Auslassungszeichen "...", um mehr Code anzuzeigen, das nicht angezeigt wird) und die Endung ";" für die Aussage.

  2. Markieren Sie die Linie.

  3. Drücken Sie die Taste [F5].

Damit wird nur die hervorgehobene Anweisung ausgeführt. Wenn Sie mehr als eine Anweisung gleichzeitig ausführen möchten, reduzieren Sie jede Anweisung und markieren Sie alles, was Sie ausführen möchten. Klicken Sie dann auf [F5]. Es ist eine Problemumgehung, aber immer noch viel einfacher, als jedes Mal zahlreiche Codezeilen ziehen und hervorheben zu müssen.

Tim Farrar
quelle
0

Der einfachste Weg, dies zu tun, ist die Zuweisung für CTRL+ EnterKombination für die Aktion Query.Execute in SQL Server Management Studio.

  1. Tools > OptionsMenü öffnen .
  2. Wählen Sie die Environment > KeyboardSeite im linken Bereich aus.
  3. Query.ExecuteAktion suchen und auswählen.
  4. Stellen Sie SQL Query Editorin "Use new shortcut in:"Dropdown - Liste.
  5. Geben Sie nun die CTRL + EnterKombination in das press shortcut keys:Textfeld ein.
  6. Klicken Sie auf die AssignSchaltfläche.
  7. Wechseln Sie Shortcut currently used by:zuQuery.Execute (Ctrl+Enter (SQL Query Editor))
  8. Klicken Sie auf OK. Done.
Abdullah Ilgaz
quelle
Um nur die aktuelle Zeile auszuführen, wählen Sie mit Umschalt + Home alle Zeilen am Ende der Zeile aus und führen Sie dann Strg + Eingabetaste aus.
Abdullah Ilgaz
0

Versuchen Sie, ein Makro in SSMSBoost zu definieren. SSMSBoost / Einstellungen / Makros:

Wählen Sie einen freien Steckplatz für Ihr Makro in der Beschriftung des rechten Bedienfelds (falls gewünscht) und fügen Sie der Sequenz zwei Befehle hinzu: SSMSBoost.SelectCurrentStatement Query.Execute Weisen Sie Ihre bevorzugte Verknüpfung zu, und das ist alles.

Gern
quelle
-1

Folgendes funktioniert für mich ... Ich verwende SSMS 2012

1 - Klicken Sie auf Extras> Optionen> Umgebungstastatur

2 - Setzen Sie für Show-Befehle, die enthalten , auf Query.Execute

3 - Setzen Sie für Neue Verknüpfung verwenden auf den SQL-Abfrage-Editor

4 - Führen Sie für Drücken der Tastenkombination die Kombination Strg-Eingabetaste aus.

5 - Klicken Sie auf Zuweisen. Klicken Sie auf OK.

BGA
quelle
Das macht das ganze Skript - ich möchte nur die Anweisung unter dem Cursor.
JosephStyons
Tut mir leid, ich habe die Frage falsch verstanden.
BGA