Editar scripts SQLCMD com o Editor de Consultas
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System)
Ao usar o Editor de Consultas do Mecanismo de Banco de Dados no SQL Server Management Studio, você poderá escrever e editar consultas como scripts SQLCMD. Use scripts SQLCMD quando processar comandos de Sistema do Windows e instruções Transact-SQL no mesmo script.
Modo SQLCMD
Para usar o Editor de Consultas do Mecanismo de Banco de Dados para gravar ou editar scripts SQLCMD, habilite o modo de script SQLCMD. Por padrão, o modo SQLCMD não é permitido no Editor de Consultas. Você pode habilitar o modo de script selecionando no ícone Modo SQLCMD na barra de ferramentas ou selecionando Modo SQLCMD no menu Consulta.
Observação
A habilitação do modo SQLCMD desativa o IntelliSense e o depurador Transact-SQL no Editor de Consultas do Mecanismo de Banco de Dados.
No Editor de Consultas, os scripts SQLCMD podem usar os mesmos recursos disponíveis para todos os scripts Transact-SQL. Entre esses recursos estão:
- Codificação de cores
- Execução de scripts
- Controle do código-fonte
- Scripts de análise
- Showplan
Habilitar o script de SQLCMD no Editor de Consultas
Para ativar o script SQLCMD em uma janela ativa do Editor de Consultas do Mecanismo de Banco de Dados , use o procedimento a seguir.
Alternar uma janela do Editor de Consultas do mecanismo de banco de dados para o modo SQLCMD
No Pesquisador de Objetos, clique com o botão direito do mouse no servidor e selecione Nova Consulta para abrir uma nova janela do Editor de Consultas do Mecanismo de Banco de Dados.
No menu Consulta, selecione Modo SQLCMD.
O Editor de Consultas executa instruções SQLCMD no contexto do Editor de Consultas.
Na barra de ferramentas Editor do SQL , na lista Bancos de Dados Disponíveis , selecione
AdventureWorks2022
.Na janela do Editor de Consultas, digite as instruções Transact-SQL a seguir e a instrução SQLCMD
!!DIR
:SELECT DISTINCT Type FROM Sales.SpecialOffer; GO !!DIR GO SELECT ProductCategoryID, Name FROM Production.ProductCategory; GO
Pressione F5 para executar a seção de instruções mistas Transact-SQL e MS-DOS.
Observe os dois painéis de resultados SQL da primeira e terceira instruções.
No painel Resultados, selecione a guia Mensagens para ver as mensagens das três instruções:
- (6 linha(s) afetada(s))
- <As informações do diretório>
- (4 linha(s) afetada(s))
Importante
Quando executado na linha de comando, o utilitário sqlcmd permite a interação total com o sistema operacional. Ao usar o Editor de Consultas no Modo SQLCMD, tenha cuidado para não executar instruções interativas. O Editor de Consultas não pode responder a prompts do sistema operacional.
Para obter mais informações sobre como executar o SQLCMD, confira Utilitário sqlcmd ou confira o tutorial do SQLCMD.
Habilitar o script SQLCMD por padrão
Para ativar o script de SQLCMD por padrão, no menu Ferramentas, selecione Opções, expanda Execução de Consulta e, no SQL Server, clique na página Geral e marque a caixa Por padrão, abrir novas consultas no modo SQLCMD.
Gravar e editar scripts SQLCMD
Depois de habilitar o modo de script, você poderá gravar comandos SQLCMD e instruções Transact-SQL. As seguintes regras se aplicam:
Comandos SQLCMD devem ser a primeira instrução em uma linha.
Somente um comando SQLCMD é permitido em cada linha.
Comandos SQLCMD podem ser precedidos por comentários ou espaço em branco.
Comandos SQLCMD em caracteres de comentário não são executados.
Caracteres de comentário de linha única são dois hífens (
--)
) e devem aparecer no início de uma linha.Comandos de sistema operacional devem ser precedidos por dois pontos de exclamação (
!!
). O comando com dois pontos de exclamação faz com que a instrução que vem depois desses pontos seja executada usando o processador de comandocmd.exe
. Como o texto depois de!!
é passado como um parâmetro paracmd.exe
, a linha de comando final será executada como:"%SystemRoot%\system32\cmd.exe /c <text after !!>"
.Para fazer uma distinção clara entre comandos SQLCMD e comandos Transact-SQL, todos os comandos SQLCMD precisam ser precedidos por dois pontos (
:
).O comando
GO
pode ser usado sem prefácio ou precedido por!!:
O Editor de Consultas do Mecanismo de Banco de Dados dá suporte a variáveis de ambiente e variáveis definidas como parte de um script SQLCMD, mas não dá suporte para variáveis SQLCMD internas ou osql. O processamento de SQLCMD pelo SQL Server Management Studio diferencia maiúsculas de minúsculas em variáveis. Por exemplo, PRINT '$ (COMPUTERNAME)' produz o resultado correto, mas PRINT '$(ComputerName)' retorna um erro.
Cuidado
O SQL Server Management Studio usa o Microsoft.NET FrameworkSqlClient para execução nos modos normal e SQLCMD. Quando executado na linha de comando, o SQLCMD usa o provedor OLE DB. Devido às diferentes opções padrão que podem ser aplicadas, será possível observar um comportamento diferente ao executar a mesma consulta no Modo SQLCMD do SQL Server Management Studio e no utilitário SQLCMD.
Sintaxe SQLCMD com suporte
O Editor de Consultas do Mecanismo de Banco de Dados oferece suporte às seguintes palavras-chave do script SQLCMD:
[!!:]GO[count]
!! <command>
:exit(statement)
:Quit
:r <filename>
:setvar <var> <value>
:connect server[\instance] [-l login_timeout] [-U user [-P password]]
:on error [ignore|exit]
:error <filename>|stderr|stdout
:out <filename>|stderr|stdout
Observação
Envie a saída para a guia de mensagens para :error
e :out
, stderr
e stdout
.
O Editor de Consultas não oferece suporte aos comandos SQLCMD não listados acima. Quando um script que contém palavras-chave SQLCMD sem suporte é executado, o Editor de Consultas envia uma mensagem "Ignorando comando <comando ignorado>" para o destino de cada palavra-chave sem suporte. O script é executado com êxito, mas os comandos sem suporte são ignorados.
Cuidado
Como você não está iniciando o SQLCMD na linha de comando, existem algumas limitações na execução do Editor de Consultas no Modo SQLCMD. Você não pode passar parâmetros de linha de comando como variáveis e, como o Editor de Consultas não pode responder a prompts do sistema operacional, tenha cuidado para não executar instruções interativas.
Codificação por cores em scripts SQLCMD
Com o script SQLCMD habilitado, os scripts são codificados por cores. A codificação por cores para palavras-chave do Transact-SQL permanece a mesma. Os comandos SQLCMD são apresentados com um plano de fundo sombreado.
Exemplo
O exemplo a seguir usa uma instrução SQLCMD para criar um arquivo de saída denominado testoutput.txt, executa duas instruções Transact-SQL SELECT juntamente com um comando de sistema operacional (para imprimir o diretório atual). O arquivo resultante contém a saída de mensagem da instrução DIR
e os resultados produzidos pelas instruções Transact-SQL.
:out C:\testoutput.txt
SELECT @@VERSION As 'Server Version';
!!DIR
!!:GO
SELECT @@SERVERNAME AS 'Server Name';
GO