Jak mogę uruchomić tylko instrukcję, na której znajduje się mój kursor w programie SQL Server Management Studio?

97

Jako długi Ropuch dla użytkownika Oracle przyzwyczaiłem się do wciskania Ctrl + Enter i wykonywania instrukcji pod kursorem.

W SQL Server Management Studio naciśnięcie klawisza F5 powoduje uruchomienie całego skryptu. Aby uruchomić tylko bieżącą instrukcję, muszę ręcznie zaznaczyć żądaną instrukcję, a następnie nacisnąć klawisz F5.

To jest dla mnie naprawdę denerwujące. Czy ktoś zna narzędzie ze skrótem klawiaturowym do uruchamiania tylko bieżącej instrukcji na serwerze SQL? Zmieniłbym narzędzia tylko dla tej jednej funkcji.

Uwaga: Co dziwne, nawet bezpłatna Ropucha dla SQL Server nie pozwala na uruchomienie tylko instrukcji pod kursorem.

JosephStyons
źródło
2
Uwaga do notatki: w TOAD klawisz F9 uruchamia bieżącą grupę instrukcji. Grupy rozdziela się za pomocą słowa kluczowego „go” (na które również odpowiada „ercan”).
crokusek
F9 uruchamia tylko bieżącą instrukcję w późniejszych wersjach TOAD (v6.6 ++). Instrukcje są opcjonalnie oddzielane średnikami. Jest w 95% godny zaufania, ponieważ jest w stanie wiedzieć, gdzie kończy się instrukcja, nawet jeśli nie ma średnika.
crokusek
1
Dziesięć lat później jest to nadal problem. Właśnie pochodzę od SQL Developer i jestem zszokowany, że nawet teraz powinienem dokonać żmudnego obejścia tego problemu. Może jakieś nowe rozwiązanie?
MattSom,
1
@MattSom Życzę!
JosephStyons

Odpowiedzi:

37

Możesz sprawdzić ten dodatek dla SSMS 2012. Umieść kursor w instrukcji, którą chcesz wykonać i naciśnij CTRL+ SHIFT+E

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

Aktualizacja:
Projekt został przeniesiony na github, a dodatek został ponownie napisany w celu obsługi SSMS 2014, SSMS 2016. (Wcześniej projekt działał na codeplex, w SSMS Executor - http://ssmsexecutor.codeplex.com/ .)

Stanislav Stoyanov
źródło
2
To działało naprawdę dobrze w SSMS2012, ale teraz używam SSMS2014 i naprawdę za tym tęsknię! Czy ktoś zna rozwiązanie SSMS2014?
samp
3
Cześć samp , przerabiam narzędzie dla SSMS2014. Poinformuje Cię, kiedy będziesz gotowy.
Stanislav Stoyanov
1
@ st.stoqnov - Bardzo chciałbym użyć tego dodatku, ale używamy SSMS 2013. Kiedy planujesz wspierać tę wersję? Dzięki
namford
1
Cześć @namford, projekt został przeniesiony na github, a dodatek został przepisany, aby obsługiwał SSMS 2014/2016.
Stanislav Stoyanov
1
@StanislavStoyanov Edytuj pytanie, aby wspomnieć, że jesteś autorem projektu, który polecasz.
jpaugh
35

Użyj Ctrl+, KUaby wybrać linię. Następnie użyj, F5aby go uruchomić.

Chociaż działa tylko w przypadku wyboru jednej linii, nadal uważam, że jest całkiem przydatny.

Mam nadzieję, że to pomoże!!

kurz
źródło
2
Hej, to przydatne, dla jednej wkładki. Dzięki
JosephStyons
Albo to i CTRL E
Hugh Seagraves
CTRL-E wykonał cały skrypt w pliku w SSMS 18.5
Alexander
21

Ok, więc wszystkie te odpowiedzi brzmią: „Nie, to nie jest możliwe”.

Edytować:

Oto, jak mogłem to zrobić:

1 - Pobierz program SQL Developer

2 - Pobierz sterownik jTDS

3 - Postępuj zgodnie z tymi instrukcjami, aby dodać ten sterownik do programu SQL Developer

4 - Połącz się z SQL Server za pomocą SQL Developer (super!)

5 - Uruchom to, a życie jest dobre

JosephStyons
źródło
3
Nie jestem pewien, jak można to uznać za odpowiedź, ponieważ wszystkie są oparte na narzędziach Oracle. Pytanie dotyczyło SSMS
Jacques,
2
DBeaver zezwala również na to zapytanie między; ; wykonanie. I to znacznie więcej niż SQL Developer
Dima Fomin
@Jacques Wykonywanie jednowierszowe to jedyna funkcja, którą Oracle dobrze wykonał, a Microsoft nie. Wszystko inne SQL Developer jest sub-par, ale nie integrują się z serwerami MS SQL.
jpaugh
@Jacques ponieważ nie jest to łatwe do zrobienia w SSMS, cieszę się, że jest taka odpowiedź i dla mnie ta wydaje się najlepsza (zwykle moje zapytania nie są jednowierszowe, nie wolę pisać skomplikowanych zapytań w jedna linia tylko po to, aby CTRL + KU działało ...)
Betlista
W rzeczywistości możesz użyć SQL Developer do uruchamiania zapytań MSSQL-Server. Myślę, że to nie jest dobry pomysł, ale wstydź się, Microsoft, za tak złe wrażenia użytkownika.
Gerfried
9

Ktoś zasugerował tę funkcjonalność w Devart dbForge SQL Complete (dodatek do Management Studio) i wciąż jest w fazie rozwoju. Miejmy nadzieję, że jest skończony i nie zostanie porzucony w połowie tworzenia.

Salamander2007
źródło
2
Właśnie zainstalowałem bezpłatną wersję dla Sqlserver14 (?) I wygląda na to, że działa. [Strona Devart] ( devart.com/dbforge/sql/sqlcomplete/editions.html )
LosManos
Używałem go do tej pory ... teraz pokazuje dodaj za każdym razem, gdy uruchamiam Visual Studio.
PAS
6

Uwaga: Co dziwne, nawet bezpłatna ropucha dla SQL Server nie pozwala na uruchomienie tylko instrukcji pod kursorem.

To naprawdę denerwujące, że TOAD nie dotrzymuje obietnic:

Z pomocy TOAD: [F9, aby wykonać] część instrukcji, która może zawierać jedną lub więcej instrukcji. Możesz zaznaczyć część instrukcji, umieszczając kursor wewnątrz instrukcji lub obok niej lub wybierając instrukcję. Uwaga: Ropucha traktuje „sąsiadujące” wszystkie instrukcje (w tym komentarze) oddzielone od kursora lub od siebie mniej niż dwoma pustymi wierszami. Jeśli podczas wykonywania instrukcji wystąpi błąd, zostanie wyświetlony komunikat o błędzie, umożliwiający zignorowanie błędu i kontynuowanie lub przerwanie wykonywania.

Próbowałem tego milion razy, ale po prostu wykonuje cały skrypt. Chciałem go znaleźć w grupie wsparcia użytkowników (toadss (at) yahoogroups.com), ale Yahoo ma najgłupszą wyszukiwarkę, jaka kiedykolwiek istniała! Nie może nawet znaleźć słowa kluczowego „ropucha” w grupie poczty ropucha, DOH!

Myślę, że TOAD to najlepsze narzędzie do wyszukiwania zapytań, ale brak tej funkcji naprawdę mnie denerwuje.

AKTUALIZACJA: ZNALEZIONO ROZWIĄZANIE! Zadałem ten problem w grupie mailowej toadss i otrzymałem odpowiedź. W przeciwieństwie do Oracle, musisz oddzielić instrukcje w SQL Server za pomocą słowa kluczowego GO po każdej instrukcji. Tylko jeśli to zrobisz, przycisk F9 działa zgodnie z oczekiwaniami, wykonując bieżącą instrukcję.

ercan
źródło
6

Powyższa odpowiedź pomogła mi stworzyć skrót do wykonania aktualnej instrukcji bez wybierania zapytania

1 - Kliknij Narzędzia > Opcje > Środowisko > Klawiatura

2 - W przypadku poleceń Pokaż zawierających, ustaw je na SqlComplete10.Common_ExecuteCurrentStatement

3 - Aby użyć nowego skrótu w, ustaw go na SQL Query Editor

4 - Aby nacisnąć klawisze skrótu (żądany klawisz skrótu), wykonaj kombinację Ctrl-Enter.

5 - Kliknij Przypisz . Kliknij OK.

Galla Balaji
źródło
To załatwia sprawę, ale musiałem najpierw usunąć skrót z innego polecenia, inaczej po prostu by nie działał.
Sty
Jak to zrobiłeś? Kiedy postępuję zgodnie z instrukcjami powyżej, ctl-enter po prostu podświetla linię (zauważ, że moje zapytania są w wielu wierszach).
user441521
Wydaje się nieaktualne.
Ali Karaca
@Matt Znalazłem coś, gdy szukałem „Execute”, a mianowicie Tools.ExecuteStatement, co działa tylko wtedy, gdy zmienię jego skrót na Global.
jpaugh
@Matt Nope! Okazuje się, że została dodana przez tę wtyczkę , która wreszcie zaczęła działać.
jpaugh
5

Użyłem tego obejścia; gdy kod nie jest wykomentowany

Ctrl + K + U

(to polecenie wyróżnia bieżącą linię zapytania), a następnie

Ctrl + E.

(to zapytanie podświetlone).

Jest to przydatne, gdy chcesz uruchomić zapytanie jednowierszowe między innymi wierszami, takimi jak:

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

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

  Select top 100 * from [dbo].[OrderStatus]
nzrytmn
źródło
4

Używam obejścia: komentuję zapytania, których nie używam. Możesz użyć CTRL-K, CTRL-C, aby skomentować podświetlony SQL. Użyj CTRL-K, CTRL-U, aby odkomentować. W ten sposób możesz skomentować wszystkie inne zapytania i wykonać to, które Cię interesuje, za pomocą F5.

Andomar
źródło
8
To totalny ból w tyłku. Dlaczego edytor SQL miałby zmuszać mnie do komentowania wszystkiego, czego nie chcę? Czy nie mogę po prostu powiedzieć „uruchom to jedno polecenie” bez chwytania myszy lub naciskania „Shift + Up” 35 razy?
JosephStyons
4
Tylko dla wyjaśnienia, dzięki za odpowiedź; Doceniam to. Naprawdę tylko chwytam interfejs SQL Server Mgmt Studio.
JosephStyons
1
Jeśli znajdziesz lepszy sposób, nie zapomnij opublikować go tutaj :)
Andomar
3

Nie sądzę, aby było to możliwe przy użyciu samego studia menedżerskiego. ALE możesz użyć oprogramowania skrótów klawiaturowych (np. Http://www.autohotkey.com/ ), aby nagrać specjalną sekwencję i przypisać ją do klawisza skrótu. W twoim przypadku potrzebujesz:

<home><shift-end><F5>

Spowoduje to zaznaczenie bieżącej linii i wykonanie jej.

DmitryK
źródło
8
Nie spowoduje to jednak zaznaczenia całego bieżącego (wielowierszowego) bloku.
tbone
2

W programie Toad for SQL Server do wykonania można użyć następujących domyślnych klawiszy skrótu:

  • F5: Wykonaj wszystkie instrukcje SQL w edytorze
  • F9: Wykonaj instrukcję SQL w bieżącej pozycji kursora
  • Shift-F9: Wykonuje wszystkie instrukcje SQL z kursora, w tym bieżące w pozycji kursora

Jednak, jak napisał „ercan”, musisz oddzielić / wykonać każdą instrukcję za pomocą „GO”.

SELECT TOP 5 * FROM accounts
GO

SELECT TOP 5 * FROM users
GO

SELECT TOP 5 * FROM contracts
GO
Kåre Werner Storgaard
źródło
1

Jeśli musisz przesunąć rękę do części myszy, która ci przeszkadza, możesz przytrzymać klawisz Ctrl, naciskając klawisz strzałki w górę lub w dół, aby od razu zaznaczyć linię.

Joel Coehoorn
źródło
6
Masz na myśli Shift, tak? A to jest żmudne w przypadku większych stwierdzeń. Ale dzięki za pomysł.
JosephStyons
1

Hit Ctrl- Egdy tekst jest podświetlony.

Chris McCall
źródło
9
Ok, ale nadal muszę ręcznie zaznaczyć to, czego chcę. Moim prawdziwym celem jest wpisanie instrukcji, a następnie naciśnięcie jakiegoś klawisza, który będzie wykonywał to, co znajduje się pod kursorem.
JosephStyons
7
dla mnie F5 jest łatwiejszy do trafienia, gdy tekst jest podświetlony, a następnie "CTRL-E".
KM.
1

Edycja SQL Complete Express ma to wbudowane. Ale nie można tego uzyskać bez niestandardowego IntelliSense.

(Mam to z postu Salamander2007)

Shorin
źródło
3
Nie mówiąc nam, jak to zrobić, nie jest to zbyt przydatne
G-.
1

Jeśli rozwiązanie dodatku executora (w odpowiedzi na pierwsze pytanie) nie działa poprawnie, to działa dla mnie (SSMS v17.8.1): Dodatek dodaje polecenie w obszarze narzędzia: Narzędzia> Wykonaj instrukcję wewnętrzną .

Możesz przypisać do niego niestandardowy klawisz skrótu klawiaturowego, przechodząc do menu Narzędzia> Opcje> Klawiatura, a następnie wyszukując „wykonaj” w polu „Pokaż polecenia zawierające:” i wybierając Narzędzia.ExecuteInnerStatement . Następnie po prostu przypisz żądane naciśnięcia klawiszy w polu „Naciśnij klawisze skrótu:” i naciśnij przycisk Przypisz.

inouttennis2314
źródło
1

Ta funkcja jest obecna w dodatku SSMSBoost dla SSMS (jestem twórcą tego dodatku):

Shift-F5 wybierze bieżącą instrukcję (co pozwala na przejrzenie tego, co masz zamiar wykonać). Następnie naciskasz F5 i wykonujesz go.

Andrei Rantsevich
źródło
1

Spróbuj zdefiniować makro w SSMSBoost SSMSBoost / Settings / Macros:

Wybierz wolne miejsce dla swojego makra w podpisie wypełnienia prawego panelu (jeśli chcesz) dodaj 2 polecenia do sekwencji: SSMSBoost.SelectCurrentStatement Query.Execute przypisz ci swój ulubiony skrót i to wszystko.

Gern
źródło
0

zawsze możesz użyć narzędzi wiersza poleceń sqlcmd i osql. Zrobiłem dużo sybase w wierszu poleceń unixa, używając funkcji opakowania, która przekazała moje polecenie do odpowiednika (który, jak sądzę, był isql?). Używałem vi, więc może wtedy byłem po prostu szalony ;-)

KM.
źródło
Właściwie to nie pomoże. SQLCMD nie wyśle ​​polecenia do SQL Server, dopóki partia nie zostanie zakończona. (Zwykle oznaczone GO.)
Shannon Severance
0

Po prostu wybierz (zaznacz) pojedynczą instrukcję, którą chcesz uruchomić i naciśnij klawisz F5.

JE
źródło
2
Z pytania: Aby uruchomić tylko bieżącą instrukcję, muszę ręcznie zaznaczyć żądaną instrukcję, a następnie nacisnąć klawisz F5.
Paul McCarthy,
1
trochę jak, po prostu wysiądź z samochodu i obróć przednie opony, aby wskazywały kierunek, w którym chcesz jechać, i naciśnij pedał
gazu
0

Możesz połączyć te dwa narzędzia w następujący sposób: SQL Complete z dbForce i AuhotHotkey.

Z SQL Complete: możesz wykonać bieżącą instrukcję w miejscu kursora, naciskając kombinację Ctrl Shift E

Powodem, dla którego użyłem AutoHotkey, jest ułatwienie życia :-), używając tylko F6 do wykonania bieżącej instrukcji, ustawiając następujący kod w skrypcie AutoHotkey:

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

I voilà, możesz wykonać dowolną bieżącą instrukcję przy kursorze, naciskając po prostu F6

Ale czasami znowu moim wielkim problemem jest to, że omyłkowo wciskam F5 zamiast F6: D

Niebieski krzyż
źródło
0

Może to zrobić rozszerzenie SQL Prompt firmy Redgate dla programu SSMS.

To nie jest darmowe, ale z mojego doświadczenia wynika, że ​​warto je mieć. Lepsza inteligencja niż w SSMS po wyjęciu z pudełka, kolorowanie kart, historia kart (tak cenna!), Fragmenty, wykonanie pojedynczej instrukcji (nie tylko pojedynczej linii) i wiele więcej.

Matt Laxton
źródło
0

Aby uruchomić tylko sekcję większego skryptu, spróbuj tego ...

Kroki:

  1. Zwiń instrukcję SQL, którą chcesz uruchomić, klikając znak minus na lewym marginesie obok instrukcji. Spowoduje to wyświetlenie tylko pierwszej linii (z wielokropkiem „...” wskazującym, że kod nie jest wyświetlany) i końcówką „;” za oświadczenie.

  2. Podświetl linię.

  3. Naciśnij klawisz [F5].

To uruchomi tylko podświetloną instrukcję. Jeśli chcesz uruchomić więcej niż jedną instrukcję na raz, zwiń każdą instrukcję i zaznacz wszystko, co chcesz uruchomić, a następnie kliknij [F5]. Jest to obejście, ale nadal znacznie łatwiejsze niż ciągłe przeciąganie i zaznaczanie wielu wierszy kodu za każdym razem.

Tim Farrar
źródło
0

Najprostszym sposobem na to jest zadanie dla CTRL+ Enterkombinacji dla działania Query.Execute w SQL Server Management Studio.

  1. Otwórz Tools > Optionsmenu.
  2. Wybierz Environment > Keyboardstronę w lewym okienku.
  3. Znajdź Query.Executeakcję i wybierz ją.
  4. Ustaw SQL Query Editorna "Use new shortcut in:"liście rozwijanej.
  5. Teraz wpisz CTRL + Enterkombinację w press shortcut keys:polu tekstowym.
  6. Kliknij Assignprzycisk.
  7. Zmień Shortcut currently used by:naQuery.Execute (Ctrl+Enter (SQL Query Editor))
  8. Kliknij OK. Done.
Abdullah Ilgaz
źródło
Aby wykonać tylko bieżącą linię, zaznacz wszystkie linie na końcu linii za pomocą Shift + Home, a następnie wykonaj Ctrl + Enter.
Abdullah Ilgaz
0

Użyj Shift+ (strzałka w dół), aby wybrać pojedynczy wiersz, zapisz przycisk niż Ctrl+ KU : D lol.

Następnie użyj, F5aby go uruchomić.

Mam nadzieję, że to też pomoże.

Brifeb
źródło
-1

Poniższe działa dla mnie ... Używam SSMS 2012

1 - Kliknij Narzędzia> Opcje> Klawiatura środowiska

2 - W przypadku poleceń Pokaż zawierających , ustaw je na Query.Execute

3 - Aby użyć nowego skrótu w , ustaw go na SQL Query Editor

4 - W przypadku naciśnięcia klawiszy skrótu wykonaj kombinację Ctrl-Enter.

5 - Kliknij Przypisz. Kliknij OK.

BGA
źródło
To załatwia cały skrypt - chcę tylko oświadczenie pod kursorem.
JosephStyons,
Przepraszam, że źle zrozumiałem pytanie.
BGA,