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

  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 do Mecanismo de Banco de Dados.

  2. No menu Consulta, selecione Modo SQLCMD.

    O Editor de Consultas executa instruções SQLCMD no contexto do Editor de Consultas.

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

  4. 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
    
  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 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 comando cmd.exe . Como o texto depois de !! é passado como um parâmetro para cmd.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

Próximas etapas