Como posso executar apenas a instrução em que meu cursor está no SQL Server Management Studio?

94

Como usuário Toad for Oracle de longa data, eu me acostumei a pressionar Ctrl + Enter e ter apenas a instrução sob o cursor ser executada.

No SQL Server Management Studio, pressionar F5 executa todo o script. Para executar apenas a declaração atual, preciso destacar manualmente a declaração que desejo e, em seguida, pressionar F5.

Isso é realmente irritante para mim. Alguém conhece uma ferramenta com um atalho de teclado para executar apenas a instrução atual em um SQL Server? Eu mudaria as ferramentas apenas para este recurso.

Nota: Curiosamente, mesmo o Toad gratuito para SQL Server não permite que você execute apenas a instrução sob o cursor.

JosephStyons
fonte
2
Observação sobre sua observação: No TOAD, a tecla F9 executa o (s) grupo (s) de instrução atual (is). Os grupos são separados usando a palavra-chave "go" (também respondida por "ercan").
crokusek
F9 executa apenas a instrução atual nas versões posteriores do TOAD (v6.6 ++). As instruções são opcionalmente separadas por ponto e vírgula. É 95% confiável em ser capaz de saber onde termina a instrução, mesmo quando não há ponto-e-vírgula.
crokusek
1
Dez anos depois, isso ainda é um problema. Acabei de chegar do SQL Developer e estou chocado por realmente ter criado uma solução entediante para isso agora mesmo. Alguma solução recente, talvez?
MattSom
1
@MattSom, eu desejo!
JosephStyons

Respostas:

37

Você pode verificar este add-in para SSMS 2012. Coloque o cursor dentro da instrução que deseja executar e pressione CTRL+ SHIFT+E

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

Atualização: o
projeto foi movido para o github e o suplemento foi reescrito para oferecer suporte ao SSMS 2014, SSMS 2016. (Anteriormente, o projeto vivia em codeplex, em SSMS Executor - http://ssmsexecutor.codeplex.com/ .)

Stanislav Stoyanov
fonte
2
Isso funcionou muito bem para mim no SSMS2012, mas agora estou executando o SSMS2014 e realmente sinto falta! Alguém conhece uma solução SSMS2014?
samp
3
Olá, samp , estou reformulando a ferramenta para SSMS2014. Avisará você quando estiver pronto.
Stanislav Stoyanov
1
@ st.stoqnov - Eu adoraria usar este addin, mas estamos executando o SSMS 2013. Quando você planeja oferecer suporte a esta versão? Obrigado
namford
1
Olá @namford, o projeto foi movido para o github e o addin foi reescrito para oferecer suporte ao SSMS 2014/2016.
Stanislav Stoyanov
1
@StanislavStoyanov Edite a pergunta para mencionar que você é o autor do projeto que está recomendando.
jpaugh de
34

Use Ctrl+ KUpara selecionar uma linha. Em seguida, use F5para executá-lo.

Embora funcione apenas para seleção de linha única, ainda acho bastante útil.

Espero que ajude!!

poeira
fonte
2
Ei, isso é útil, para um liners. Obrigado
JosephStyons
Ou isso e CTRL E
Hugh Seagraves
CTRL-E executou o script inteiro no arquivo no SSMS 18.5
Alexander
20

Ok, então o que estou obtendo com todas essas respostas é "Não, isso não é possível."

Editar:

Aqui está como fui capaz de fazer isso:

1 - Baixe o SQL Developer

2 - Baixe o driver jTDS

3 - Siga estas instruções para adicionar esse driver ao SQL Developer

4 - Conecte-se ao SQL Server usando o SQL Developer (legal!)

5 - Corra e a vida é boa

JosephStyons
fonte
3
Não tenho certeza de como isso pode ser considerado a resposta, porque tudo isso é baseado em ferramentas Oracle. A pergunta estava relacionada a SSMS
Jacques
2
DBeaver também permite essa consulta entre; ; execução. E é muito mais poderoso do que SQL Developer
Dima Fomin
@Jacques A execução de linha única é o único recurso que a Oracle acertou, e a Microsoft não. Tudo mais sobre SQL Developer é sub-par, mas não integrar com servidores MS SQL.
jpaugh
@Jacques como isso não é fácil de fazer trabalhar em SSMS, fico feliz que tenha essa resposta e para mim esta parece ser a melhor (normalmente minhas consultas não são de uma linha, eu não prefiro escrever consultas complexas em uma linha só para fazer CTRL + KU funcionar ...)
Betlista
9

Alguém sugeriu esses recursos no Devart dbForge SQL Complete (complemento para Management Studio), e ainda está em estágio de desenvolvimento. Vamos torcer para que ele esteja concluído e não seja abandonado no meio do desenvolvimento.

Salamander2007
fonte
2
Acabei de instalar a versão gratuita do Sqlserver14 (?) E parece funcionar. [Página Devart] ( devart.com/dbforge/sql/sqlcomplete/editions.html )
LosManos
Eu usei até agora .... agora está mostrando add toda vez que eu inicio o Visual Studio.
PAS
6

Nota: Curiosamente, mesmo o Toad gratuito para SQL Server não permite executar apenas a instrução sob o cursor.

É realmente irritante que o TOAD não cumpra o que promete:

Da ajuda do TOAD: [F9 para executar] uma parte de uma instrução, que pode conter uma ou mais instruções. Você pode selecionar a parte da declaração colocando o cursor dentro ou ao lado da declaração, ou selecionando a declaração. Nota: o Toad considera "adjacentes" todas as instruções (incluindo comentários) separadas do cursor ou umas das outras por menos de duas linhas em branco. Se ocorrer um erro durante a execução da instrução, uma mensagem de erro será exibida, permitindo que você ignore o erro e continue ou aborte a execução.

Tentei milhões de vezes, mas simplesmente executa todo o script. Eu queria pesquisá-lo no grupo de suporte ao usuário (toadss (at) yahoogroups.com), mas o Yahoo tem o mecanismo de pesquisa mais estúpido de todos os tempos! Ele nem consegue encontrar a palavra-chave "sapo" no grupo de e-mail do sapo, DOH!

Acho que o TOAD é a melhor ferramenta de consulta de todos os tempos, mas a falta desse recurso também me irrita.

ATUALIZAÇÃO: SOLUÇÃO ENCONTRADA! Eu perguntei esse problema no grupo de email toadss e obtive a resposta. Ao contrário do Oracle, você precisa separar as instruções no SQL Server com a palavra-chave GO após cada instrução. Somente se você fizer isso, o botão F9 funcionará conforme o esperado, executando a instrução atual.

ercan
fonte
6

A resposta acima me ajudou a criar um atalho para executar a instrução atual sem selecionar a consulta

1 - Clique em Ferramentas > Opções > Ambiente > Teclado

2 - Para Mostrar comandos contendo, defina-o como SqlComplete10.Common_ExecuteCurrentStatement

3 - Para Usar novo atalho em, defina-o como Editor de Consultas SQL

4 - Para Pressione as teclas de atalho (tecla de atalho desejada), execute a combinação Ctrl-Enter.

5 - Clique em Atribuir . Clique em OK.

Galla Balaji
fonte
Isso funciona, mas eu tive que remover o atalho de outro comando primeiro, caso contrário, simplesmente não funcionaria.
janeiro de
Como você fez isso? Quando eu sigo as instruções acima ctl-enter apenas destaca a linha (observe que minhas consultas estão em várias linhas).
user441521
Parece desatualizado.
Ali Karaca
@Matt Encontrei algo quando pesquisei "Execute", a saber Tools.ExecuteStatement, que só funciona quando mudo o atalho para Global.
jpaugh de
@Matt Nope! Acontece que isso foi adicionado por este plugin , que finalmente começou a funcionar.
jpaugh
4

Eu uso uma solução alternativa: eu comento as consultas que não estou usando. Você pode usar CTRL-K, CTRL-C para comentar o SQL que destacou. Use CTRL-K, CTRL-U para descomentar. Dessa forma, você pode comentar todas as outras consultas e executar aquela de seu interesse com F5.

Andomar
fonte
7
Isso é uma dor de cabeça total. Por que um Editor SQL deveria me fazer comentar tudo o que eu não quero? Posso não apenas afirmar positivamente "execute este comando único" sem agarrar o mouse ou pressionar "Shift + Up" 35 vezes?
JosephStyons de
3
Só para esclarecer, obrigado pela resposta; Eu agradeço. Na verdade, estou apenas reclamando da interface do SQL Server Mgmt Studio.
JosephStyons de
1
Se você encontrar uma maneira melhor, certifique-se de postá-la aqui :)
Andomar
4

Eu usei esta solução alternativa; quando o código não está comentado

Ctrl + K + U

(este comando destaca a linha de consulta atual) e então

Ctrl + E

(esta consulta é executada em destaque).

É útil quando você deseja executar uma consulta de linha única entre algumas outras linhas, como:

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

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

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

Eu não acho que isso seja possível usando apenas o estúdio de gerenciamento. MAS você pode usar um software de atalho de teclado (por exemplo, http://www.autohotkey.com/ ) para ter uma sequência especial gravada e atribuída a uma tecla de atalho. No seu caso, você precisa de:

<home><shift-end><F5>

Isso selecionará a linha atual e a executará.

DmitryK
fonte
8
Entretanto, isso não selecionará todo o bloco atual (multilinha).
tbone
2

No Toad para SQL Server, as seguintes teclas de atalho padrão podem ser usadas para execução:

  • F5: Execute todas as instruções SQL no editor
  • F9: Execute a instrução SQL na posição atual do cursor
  • Shift-F9: executa todas as instruções SQL do cursor, incluindo o atual na posição do cursor

No entanto, como 'ercan' escreveu, você precisa separar / seguir cada instrução com 'GO'.

SELECT TOP 5 * FROM accounts
GO

SELECT TOP 5 * FROM users
GO

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

Se tiver que mover a mão para a parte do mouse que o incomoda, você pode manter a tecla Ctrl pressionada enquanto pressiona uma tecla de seta para cima ou para baixo para selecionar uma linha de uma vez.

Joel Coehoorn
fonte
6
Você quer dizer Shift, sim? E isso é tedioso para declarações maiores. Obrigado pela ideia embora.
JosephStyons de
1

Hit Ctrl- Eenquanto o texto é destacado.

Chris McCall
fonte
9
Ok, mas ainda preciso destacar manualmente o que desejo. Meu verdadeiro objetivo é ser capaz de digitar uma instrução e, em seguida, apertar alguma tecla que irá executar apenas o que está sob o cursor.
JosephStyons de
7
para mim, F5 é mais fácil de acertar enquanto o texto é destacado do que "CTRL-E".
KM.
1

A edição SQL Complete Express tem isso integrado. Mas você não consegue isso sem o intellisense personalizado.

(Peguei isso na postagem do Salamander2007)

Shorin
fonte
3
Sem nos dizer como fazer, isso não é muito útil
G-.
1

Se a solução de complemento do executor (na resposta postada no topo) não estiver funcionando corretamente, comecei a trabalhar para mim (SSMS v17.8.1): O complemento adiciona um comando em ferramentas: Ferramentas> Executar instrução interna .

Você pode atribuir uma tecla de atalho de teclado personalizada a ele acessando Ferramentas> Opções> Teclado, em seguida, pesquise "executar" em 'Mostrar comandos contendo:' e selecionando Ferramentas.ExecuteInnerStatement . Em seguida, basta atribuir a (s) tecla (s) desejada (s) no campo 'Pressione as teclas de atalho:' e clicar no botão Atribuir.

inouttennis2314
fonte
1

Este recurso está presente no suplemento SSMSBoost para SSMS (eu sou o desenvolvedor deste suplemento):

Shift-F5 selecionará a instrução atual (que permite revisar o que você está executando atualmente). Então você pressiona F5 e executa.

Andrei Rantsevich
fonte
0

você sempre pode usar as ferramentas de linha de comando sqlcmd e osql. Eu fiz um monte de sybase all na linha de comando unix usando uma função wrapper que passou minha string de comando para o equivalente (que eu acho que era isql?). Eu costumava usar o vi, então talvez eu estivesse louco ;-)

KM.
fonte
Na verdade, isso não vai ajudar. O SQLCMD não enviará o comando ao SQL Server até que o lote seja encerrado. (Normalmente indicado com GO.)
Shannon Severance
0

Basta selecionar (destacar) a única instrução que deseja executar e pressionar F5.

JE
fonte
2
Da pergunta: Para executar apenas a declaração atual, preciso destacar manualmente a declaração que desejo e, em seguida, pressionar F5.
Paul McCarthy
1
tipo, basta sair do carro e virar os pneus dianteiros para apontar na direção que você quer ir e
pisar
0

Você pode combinar as duas ferramentas da seguinte maneira: SQL Complete de dbForce e AuhotHotkey.

Com SQL Complete: você pode executar a instrução atual no cursor, pressionando a combinação Ctrl Shift E

O motivo pelo qual usei o AutoHotkey é para tornar a vida mais fácil :-) usando apenas F6 para executar a instrução atual, definindo o seguinte código no script AutoHotkey:

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

E voilà você pode executar qualquer instrução atual no cursor apenas pressionando F6

Mas às vezes, novamente, meu grande problema é que pressiono erroneamente F5 em vez de F6: D

Cruz Azul
fonte
0

A extensão SQL Prompt da Redgate para SSMS pode fazer isso.

Não é gratuito, mas na minha experiência vale a pena ter. Melhor intellisense do que a versão original do SSMS, coloração de guias, histórico de guias (tão valioso!), Snippets, execução de instrução única (não apenas uma linha) e muito mais.

Matt Laxton
fonte
0

Para executar apenas uma seção de um script maior, tente isto ..

Passos:

  1. Recolha a instrução SQL que deseja executar clicando no sinal de menos na margem esquerda ao lado da instrução. Isso mostrará apenas a primeira linha (com reticências "..." para indicar mais código não mostrado) e o final ";" para a declaração.

  2. Destaque a linha.

  3. Pressione a tecla [F5].

Isso executará apenas a instrução destacada. Se você deseja executar mais de uma instrução por vez, recolha cada instrução e destaque todas as que deseja executar e clique em [F5]. É uma solução alternativa, mas ainda muito mais fácil do que arrastar e destacar várias linhas de código todas as vezes.

Tim Farrar
fonte
0

A maneira mais fácil de fazer isso é atribuirCTRL + Entercombinação para a ação Query.Execute in SQL Server Management Studio.

  1. Abra o Tools > Optionsmenu.
  2. Selecione a Environment > Keyboardpágina no painel esquerdo.
  3. Encontre a Query.Executeação e selecione-a.
  4. Definido SQL Query Editorna "Use new shortcut in:"lista suspensa.
  5. Agora digite a CTRL + Entercombinação na press shortcut keys:caixa de texto.
  6. Clique no Assignbotão.
  7. Mudar Shortcut currently used by:paraQuery.Execute (Ctrl+Enter (SQL Query Editor))
  8. Clique OK. Done.
Abdullah Ilgaz
fonte
Para executar apenas a linha atual, selecione todas as linhas ao final da linha com Shift + Home e, em seguida, execute Ctrl + Enter.
Abdullah Ilgaz
0

Tente definir macro em SSMSBoost SSMSBoost / Settings / Macros:

Selecione o slot livre para sua macro na legenda de preenchimento do painel direito (se desejar) adicione 2 comandos à sequência: SSMSBoost.SelectCurrentStatement Query.Execute atribui seu atalho favorito e isso é tudo.

Gern
fonte
-1

O seguinte funciona para mim ... Eu uso SSMS 2012

1 - Clique em Ferramentas> Opções> Teclado do ambiente

2 - Para Mostrar comandos contendo , defina-o como Query.Execute

3 - Para Usar novo atalho em , defina-o como Editor de Consultas SQL

4 - Para pressionar as teclas de atalho , execute a combinação Ctrl-Enter.

5 - Clique em Atribuir. Clique em OK.

BGA
fonte
Isso faz todo o script - eu só quero a declaração sob o cursor.
JosephStyons
Certo, desculpe, eu entendi mal a pergunta.
BGA de