Compartilhar via


Editar scripts SQLCMD com o Editor de Consultas

Use o editor de consultas no SSMS (SQL Server Management Studio) para gravar e editar consultas como scripts SQLCMD. Você pode usar scripts SQLCMD para processar comandos do sistema Windows e instruções Transact-SQL no mesmo script.

Habilitar o modo SQLCMD

Para usar o editor de consultas para gravar ou editar scripts SQLCMD, você deve habilitar o modo de script SQLCMD. O modo SQLCMD não está habilitado por padrão. Você pode habilitar o modo de script selecionando o ícone modo SQLCMD na barra de ferramentas ou selecionando o Modo SQLCMD no menu Consulta .

Observação

Quando você habilita o modo SQLCMD, o IntelliSense e o Transact-SQL depurador são desativados no editor de consultas.

Os scripts SQLCMD no editor de consultas podem usar os mesmos recursos que todos os scripts Transact-SQL usam. Esses recursos incluem:

  • Codificação de cores
  • Execução de scripts
  • Controle do código-fonte
  • Análise de scripts
  • Plano de exibição

Habilitar o script de SQLCMD no Editor de Consultas

Para ativar o script SQLCMD para uma janela do Editor de Consultas ativa, use o procedimento a seguir.

Alternar uma janela do editor de consultas para o modo SQLCMD

  1. 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.

  2. No menu Consulta, selecione Modo SQLCMD.

    As instruções SQLCMD são executadas no contexto do editor de consultas.

  3. Na barra de ferramentas Editor do SQL , na lista Bancos de Dados Disponíveis , selecione AdventureWorks2025.

  4. Na janela do editor de consultas, digite as seguintes instruções Transact-SQL e a !!DIR instrução SQLCMD:

    SELECT DISTINCT Type FROM Sales.SpecialOffer;
    GO
    !!DIR
    GO
    SELECT ProductCategoryID, Name FROM Production.ProductCategory;
    GO
    
  5. 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.

  6. No painel Resultados, selecione a guia Mensagens para ver as mensagens das três instruções:

    • (6 row(s) affected)
    • <The directory information>
    • (4 row(s) affected)

Importante

Quando você executa o sqlcmd na linha de comando, ele permite a interação completa 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 aos prompts do sistema operacional. Para obter mais informações sobre como executar o SQLCMD na linha de comando, consulte o utilitário 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.

Escrever e editar scripts SQLCMD

Depois de habilitar o modo de script, você pode escrever 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.

  • Você pode usar comentários e espaço em branco na frente de comandos SQLCMD.

  • Comandos SQLCMD em caracteres de comentário não são executados.

  • Caracteres de comentário de linha única são dois hifens (--) e devem aparecer no início de uma linha.

  • Prefixar comandos do sistema operacional com 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 comando cmd.exe . O texto depois !! é passado como um parâmetro para cmd.exe, portanto, a linha de comando final é executada como: "%SystemRoot%\system32\cmd.exe /c <text after !!>".

  • Para fazer uma distinção clara entre comandos SQLCMD e Transact-SQL, prefixe todos os comandos SQLCMD com dois-pontos (:).

  • O GO comando pode ser usado sem prefácio ou precedido por !!:.

  • O editor de consultas dá suporte a variáveis de ambiente e variáveis que você define como parte de um script SQLCMD, mas não dá suporte a variáveis SQLCMD ou osql internas. O SSMS processa variáveis SQLCMD como diferenciadores de maiúsculas de minúsculas. Por exemplo, PRINT '$(COMPUTERNAME)' produz o resultado correto, mas PRINT '$(ComputerName)' retorna um erro.

Cuidado

O SSMS usa a SqlClient biblioteca .NET para execução no modo regular e SQLCMD. Quando você executa a consulta na linha de comando, o sqlcmd usa o provedor OLE DB. Como diferentes opções padrão podem ser aplicadas, você pode ver um comportamento diferente ao executar a mesma consulta no modo SQLCMD dentro do SSMS, em comparação com o modo SQLCMD no utilitário sqlcmd .

Sintaxe SQLCMD Suportada

O editor de consultas dá suporte às seguintes palavras-chave de script SQLCMD:

  • [!!:]GO[count]
  • !! <command>
  • :exit(statement)
  • :Quit
  • :r <filename>
  • :setvar <var> <value>
  • :connect server[\instance] [-l login_timeout] [-U user [-P password]] 1
  • :on error [ignore|exit]
  • :error <filename>|stderr|stdout 2
  • :out <filename>|stderr|stdout 2

1 Para obter mais informações sobre o :connect comando, consulte Comandos no utilitário sqlcmd.

2 O editor de consultas envia a saída para a guia Mensagens para stderr e stdout.

O editor de consultas não dá suporte a comandos SQLCMD que não estão incluídos na lista anterior. Quando você executa um script que contém palavras-chave SQLCMD sem suporte, o editor de consultas ignora o comando. Para cada palavra-chave sem suporte, o editor de consultas envia a seguinte mensagem para o destino:

Ignoring command <ignored_command>

Cuidado

Como você não inicia o SQLCMD na linha de comando, há algumas limitações ao executar o Editor de Consultas no modo SQLCMD. Não é possível passar parâmetros de linha de comando, como variáveis. Além disso, como o editor de consultas não pode responder aos prompts do sistema operacional, você deve ter cuidado para não executar instruções interativas.

Codificação por cores em scripts SQLCMD

Quando você habilita o script SQLCMD, os scripts são codificados por cores. A codificação de cores para palavras-chave Transact-SQL permanece a mesma. Os comandos SQLCMD aparecem com um plano de fundo sombreado.

Exemplos

O exemplo a seguir usa uma instrução SQLCMD para criar um arquivo de saída chamado testoutput.txt. Ele executa duas instruções Transact-SQL SELECT e um comando do sistema operacional que imprime o diretório atual. O arquivo resultante contém a saída da mensagem da DIR instrução e a saída dos resultados das instruções Transact-SQL.

:out C:\testoutput.txt
SELECT @@VERSION As 'Server Version';
!!DIR
!!:GO
SELECT @@SERVERNAME AS 'Server Name';
GO