Come posso eseguire solo l'istruzione su cui si trova il cursore in SQL Server Management Studio?


94

Da molto tempo Toad per Oracle, mi sono abituato a premere Ctrl + Invio e ad eseguire solo l'istruzione sotto il cursore.

In SQL Server Management Studio, premendo F5 viene eseguito l'intero script. Per eseguire solo l'istruzione corrente, devo evidenziare manualmente l'istruzione che desidero e quindi premere F5.

Questo è davvero fastidioso per me. Qualcuno sa di uno strumento con una scorciatoia da tastiera per eseguire solo l'istruzione corrente su un server SQL? Vorrei cambiare strumenti solo per questa caratteristica.

Nota: stranamente, anche il Toad gratuito per SQL Server non consente di eseguire solo l'istruzione sotto il cursore.


2
Nota sulla nota: in TOAD, il tasto F9 esegue il gruppo di istruzioni corrente. I gruppi vengono separati utilizzando la parola chiave "go" (a cui risponde anche "ercan").
crokusek

F9 esegue solo l'istruzione corrente nelle versioni successive di TOAD (v6.6 ++). Le dichiarazioni possono essere facoltativamente separate da punto e virgola. È affidabile al 95% nel poter sapere dove finisce l'istruzione anche quando non c'è punto e virgola.
crokusek

1
Dieci anni dopo questo è ancora un problema. Sono appena arrivato da SQL Developer e sono scioccato di dover davvero fare una soluzione noiosa per questo anche adesso. Qualche soluzione recente forse?
MattSom

1
@ MattSom vorrei!
JosephStyons,

Risposte:


37

È possibile controllare questo componente aggiuntivo per SSMS 2012. Posizionare il cursore all'interno dell'istruzione che si desidera eseguire e premere CTRL+ SHIFT+E

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

Aggiornamento: il
progetto è stato spostato su GitHub e l'addin riscritto per supportare SSMS 2014, SSMS 2016. (In precedenza, il progetto viveva su codeplex, in SSMS Executor - http://ssmsexecutor.codeplex.com/ .)


2
Questo ha funzionato molto bene per me in SSMS2012, ma ora sto eseguendo SSMS2014 e mi manca davvero ! Qualcuno sa di una soluzione SSMS2014?
samp

3
Ciao samp, sto rielaborando lo strumento per SSMS2014. Ti farò sapere quando sarai pronto.
Stanislav Stoyanov

1
@ st.stoqnov - Mi piacerebbe usare questo addin ma stiamo eseguendo SSMS 2013. Quando pensate di supportare questa versione? Grazie
namford

1
Ciao @namford, il progetto è stato spostato su GitHub e l'addin è stato riscritto per supportare SSMS 2014/2016.
Stanislav Stoyanov,

1
@StanislavStoyanov Modifica la domanda per indicare che sei l'autore del progetto che stai raccomandando.
jpaugh

34

Usa Ctrl+ KUper selezionare una linea. Quindi utilizzare F5per eseguirlo.

Sebbene funzioni solo per la selezione di una singola riga, lo trovo comunque abbastanza utile.

Spero che sia d'aiuto!!


2
Ehi, è utile, per una battuta. Grazie
JosephStyons

O quello e CTRL E
Hugh Seagraves

CTRL-E ha eseguito l'intero script nel file in SSMS 18.5
Alexander

20

Ok, quindi quello che ottengo da tutte queste risposte è "No, non è possibile".

Modificare:

Ecco come sono riuscito a farlo:

1 - Scarica SQL Developer

2 - Scarica il driver jTDS

3 - Segui queste istruzioni per aggiungere quel driver a SQL Developer

4 - Connettiti a SQL Server utilizzando SQL Developer (fantastico!)

5 - Corri e la vita è bella


3
Non sono sicuro di come questa possa essere considerata la risposta perché questi sono tutti basati su strumenti Oracle. La domanda era relativa a SSMS
Jacques

2
DBeaver consente anche questa query tra; ; esecuzione. Ed è molto più potente di SQL Developer
Dima Fomin

@Jacques L'esecuzione su riga singola è l'unica caratteristica che Oracle ha capito bene e Microsoft no. Tutto il resto di SQL Developer è sub-par, ma non si integrano con i server MS SQL.
jpaugh

@Jacques poiché non è facile lavorare in SSMS, sono felice che ci sia questa risposta e per me questa sembra essere la migliore (in genere le mie query non sono one-line, non preferisco scrivere query complesse in una riga solo per far funzionare CTRL + KU ...)
Betlista


6

Nota: stranamente, anche il Toad gratuito per SQL Server non consente di eseguire solo l'istruzione sotto il cursore.

È davvero fastidioso che TOAD non mantenga ciò che promette:

Dall'aiuto di TOAD: [F9 per eseguire] una parte di un'istruzione, che può contenere una o più istruzioni. È possibile selezionare la parte dell'istruzione posizionando il cursore all'interno o accanto all'istruzione oppure selezionando l'istruzione. Nota: Toad considera "adiacenti" tutte le istruzioni (inclusi i commenti) separate dal cursore o l'una dall'altra da meno di due righe vuote. Se si verifica un errore durante l'esecuzione dell'istruzione, viene visualizzato un messaggio di errore che consente di ignorare l'errore e continuare o di interrompere l'esecuzione.

L'ho provato milioni di volte ma esegue semplicemente l'intero script. Volevo cercarlo nel gruppo di supporto utente (toadss (at) yahoogroups.com) ma yahoo ha la funzione di ricerca più stupida di sempre! Non riesce nemmeno a trovare la parola chiave "rospo" nel gruppo di posta del rospo, DOH!

Penso che TOAD sia il miglior strumento di query in assoluto, ma la mancanza di questa funzione mi infastidisce davvero.

AGGIORNAMENTO: SOLUZIONE TROVATA! Ho chiesto questo problema nel gruppo di posta toadss e ho ottenuto la risposta. A differenza di Oracle, è necessario separare le istruzioni in SQL Server con la parola chiave GO dopo ciascuna istruzione. Solo se lo fai il pulsante F9 funziona come previsto, eseguendo l'istruzione corrente.


6

La risposta sopra mi ha aiutato a creare un collegamento per eseguire l'istruzione corrente senza selezionare la query

1 - Fare clic su Strumenti > Opzioni > Ambiente > Tastiera

2 - Per Mostra comandi contenenti, impostalo su SqlComplete10.Common_ExecuteCurrentStatement

3 - Per Usa nuovo collegamento in, impostalo su SQL Query Editor

4 - Per Premere i tasti di scelta rapida (tasto di scelta rapida desiderato), eseguire la combinazione Ctrl-Invio.

5 - Fare clic su Assegna . Fare clic su OK.


Questo fa il trucco, ma prima ho dovuto rimuovere il collegamento da un altro comando, altrimenti semplicemente non avrebbe funzionato.
gennaio

Come hai fatto? Quando seguo le istruzioni sopra, ctl-enter evidenzia solo la riga (nota che le mie query sono su più righe).
user441521

Sembra obsoleto.
Ali Karaca

@ Matt Ho trovato qualcosa quando ho cercato "Execute", vale a dire Tools.ExecuteStatement, che funziona solo quando cambio il suo collegamento a Global.
jpaugh

@ Matt Nope! Si scopre che è stato aggiunto da questo plugin , che finalmente ha iniziato a funzionare.
jpaugh

4

Uso una soluzione alternativa: commento le query che non sto utilizzando. Puoi usare CTRL-K, CTRL-C per commentare l'SQL che hai evidenziato. Usa CTRL-K, CTRL-U per rimuovere il commento. In questo modo, puoi commentare tutte le altre query ed eseguire quella che ti interessa con F5.


7
Questo è un dolore totale nel sedere. Perché un editor SQL dovrebbe farmi commentare tutto ciò che non voglio? Non posso semplicemente affermare positivamente "esegui questo comando" senza afferrare il mouse o premere "Maiusc + Su" 35 volte?
JosephStyons

3
Giusto per chiarire, grazie per la risposta; Lo apprezzo. Sto solo lamentando l'interfaccia di SQL Server Mgmt Studio.
JosephStyons

1
Se trovi un modo migliore, assicurati di pubblicarlo qui :)
Andomar

4

Ho usato questo lavoro in giro; quando il codice non è commentato

Ctrl + K + U

(questo comando evidenzia la riga della query corrente) e poi

Ctrl + E

(questa esecuzione ha evidenziato la query).

È utile quando si desidera eseguire una query su una singola riga tra altre righe come:

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

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

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

3

Non credo sia possibile farlo utilizzando solo lo studio di gestione. MA è possibile utilizzare un software di scelta rapida da tastiera (ad esempio http://www.autohotkey.com/ ) per registrare una sequenza speciale e assegnarla a un tasto di scelta rapida. Nel tuo caso hai bisogno di:

<home><shift-end><F5>

Questo selezionerà la riga corrente e la eseguirà.


8
Tuttavia, questo non selezionerà l'intero blocco corrente (multilinea).
tbone

2

In Toad per SQL Server è possibile utilizzare i seguenti tasti di scelta rapida predefiniti per l'esecuzione:

  • F5: esegue tutte le istruzioni SQL nell'editor
  • F9: esegue l'istruzione SQL nella posizione corrente del cursore
  • Maiusc-F9: esegue tutte le istruzioni SQL dal cursore, inclusa quella corrente alla posizione del cursore

Tuttavia, come ha scritto "ercan", è necessario separare / seguire ciascuna affermazione con "GO".

SELECT TOP 5 * FROM accounts
GO

SELECT TOP 5 * FROM users
GO

SELECT TOP 5 * FROM contracts
GO

1

Se è il dover spostare la mano sulla parte del mouse che ti dà fastidio, puoi tenere premuto il tasto Ctrl mentre premi un tasto freccia su o giù per selezionare una linea contemporaneamente.


6
Intendi Shift, sì? E questo è noioso per dichiarazioni più grandi. Grazie per l'idea però.
JosephStyons

1

Hit Ctrl- Ementre il testo è evidenziato.


9
Ok, ma devo ancora evidenziare manualmente quello che voglio. Il mio vero obiettivo è essere in grado di digitare un'istruzione e quindi premere un tasto che eseguirà esattamente ciò che è sotto il cursore.
JosephStyons

7
per me, F5 è più facile da premere mentre il testo è evidenziato, quindi "CTRL-E".
KM.

1

L'edizione SQL Complete Express ha questa funzionalità incorporata. Ma non puoi ottenerla senza l'intellisense personalizzato.

(L'ho ricevuto dal post di Salamander2007)


3
Senza dirci come farlo, questo non è molto utile
G-.

1

Se la soluzione aggiuntiva per esecutore (nella risposta pubblicata in alto) non funziona correttamente, ho capito che funziona per me (SSMS v17.8.1): L'add-on aggiunge un comando in strumenti: Strumenti> Esegui istruzione interna .

Puoi assegnargli una scorciatoia da tastiera personalizzata andando su Strumenti> Opzioni> Tastiera, quindi cerca "esegui" in "Mostra comandi contenenti:" e seleziona Strumenti.EseguiInnerStatement . Quindi assegna semplicemente le sequenze di tasti desiderate nel campo "Premi i tasti di scelta rapida:" e premi il pulsante Assegna.


1

Questa funzionalità è presente nel componente aggiuntivo SSMSBoost per SSMS (sono lo sviluppatore di questo componente aggiuntivo):

Maiusc-F5 selezionerà l'istruzione corrente (che ti consente di rivedere ciò che stai per eseguire attualmente). Quindi premi F5 e lo esegui.


0

puoi sempre usare gli strumenti da riga di comando sqlcmd e osql. Ho fatto un sacco di sybase dalla riga di comando di Unix usando una funzione wrapper che ha passato la mia stringa di comando nell'equivalente (che penso fosse isql?). Ho usato vi per, quindi forse ero solo pazzo allora ;-)


In realtà questo non aiuterà. SQLCMD non invierà il comando a SQL Server fino al termine del batch. (Normalmente indicato con GO.)
Shannon Severance

0

Seleziona (evidenzia) la singola istruzione che desideri eseguire e premi F5.


2
Dalla domanda: per eseguire solo l'istruzione corrente, devo evidenziare manualmente l'istruzione che desidero e quindi premere F5.
Paul McCarthy

1
tipo, esci dalla macchina e gira le gomme anteriori per puntare nella direzione in cui vuoi andare e premi l'acceleratore ...
pcnate

0

È possibile combinare i due strumenti come segue: SQL Complete da dbForce e AuhotHotkey.

Con SQL Complete: è possibile eseguire l'istruzione corrente al cursore, premendo la combinazione Ctrl Shift E

Il motivo per cui ho usato AutoHotkey è per semplificarti la vita :-) usando solo F6 per eseguire l'istruzione corrente, impostando il seguente codice nello script AutoHotkey:

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

E voilà puoi eseguire qualsiasi istruzione corrente sul cursore semplicemente premendo F6

Ma a volte, ancora una volta il mio grosso problema è che sbaglio premere F5 invece di F6: D


0

L'estensione SQL Prompt di Redgate per SSMS può farlo.

Non è gratuito ma nella mia esperienza ne vale la pena. Intellisense migliore della versione predefinita di SSMS, colorazione delle schede, cronologia delle schede (così preziosa!), Snippet, esecuzione di una singola istruzione (non solo una singola riga) e molto altro ancora.


0

Per eseguire solo una sezione di uno script più grande, prova questo ..

Passaggi:

  1. Comprimere l'istruzione SQL che si desidera eseguire facendo clic sul segno meno nel margine sinistro accanto all'istruzione. Questo mostrerà solo la prima riga (con i puntini di sospensione "..." per indicare più codice non mostrato) e la fine ";" per la dichiarazione.

  2. Evidenzia la linea.

  3. Premere il tasto [F5].

Ciò eseguirà solo l'istruzione evidenziata. Se desideri eseguire più di un'istruzione alla volta, comprimi ciascuna istruzione ed evidenzia tutto ciò che desideri eseguire, quindi fai clic su [F5]. È una soluzione alternativa, ma è comunque molto più semplice che dover trascinare ed evidenziare numerose righe di codice ogni volta.


0

Il modo più semplice per farlo è l'assegnazione per CTRL+ Entercombinazione per l'azione Query.Execute in SQL Server Management Studio.

  1. Apri il Tools > Optionsmenu.
  2. Seleziona la Environment > Keyboardpagina nel riquadro sinistro.
  3. Trova l' Query.Executeazione e selezionala.
  4. Impostato nell'elenco SQL Query Editora "Use new shortcut in:"discesa.
  5. Ora digita la CTRL + Entercombinazione nella press shortcut keys:casella di testo.
  6. Fare clic sul Assignpulsante.
  7. Cambia Shortcut currently used by:inQuery.Execute (Ctrl+Enter (SQL Query Editor))
  8. Fare clic su OK. Done.

Per eseguire solo la riga corrente, selezionare tutta la riga alla fine della riga con Maiusc + Home, quindi eseguire Ctrl + Invio.
Abdullah Ilgaz,

0

Prova a definire la macro in SSMSBoost SSMSBoost / Impostazioni / Macro:

Seleziona lo slot libero per la tua macro nella didascalia di riempimento del pannello di destra (se vuoi) aggiungi 2 comandi alla sequenza: SSMSBoost.SelectCurrentStatement Query.Execute assegna la tua scorciatoia preferita e basta.


-1

Quanto segue funziona per me ... Uso SSMS 2012

1 - Fare clic su Strumenti> Opzioni> Tastiera ambiente

2 - Per Mostra comandi che contengono , impostalo su Query.Execute

3 - Per Usa nuovo collegamento in , impostalo su SQL Query Editor

4 - Per premere i tasti di scelta rapida , eseguire la combinazione Ctrl-Invio.

5 - Fare clic su Assegna. Fare clic su OK.


Questo fa l'intero script: voglio solo l'istruzione sotto il cursore.
JosephStyons

Bene, scusa se ho capito male la domanda.
BGA
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.