Editar scripts SQLCMD com o Editor de Consultas

Aplica-se a: simSQL Server (todas as versões compatíveis) SimBanco de Dados SQL do Azure SimInstância Gerenciada do Azure SQL simAzure Synapse Analytics simParallel Data Warehouse

Usando o Editor de Consultas do Mecanismo de Banco de Dados no SQL Server Management Studio, você pode escrever e editar consultas como scripts SQLCMD. Você usa scripts SQLCMD quando precisa 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 é habilitado no Editor de Consultas. Você pode habilitar o modo de script clicando 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 por cores

  • Scripts de execução

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

Para 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 clique em Nova Consulta para abrir uma nova janela do Editor de Consultas do Mecanismo de Banco de Dados .

  2. No menu Consulta , clique em 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 AdventureWorks2012.

  4. Na janela do Editor de Consultas, digite as duas instruções Transact-SQL a seguir e a instrução !!DIR 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 inteira 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 , clique na guia Mensagens para ver as mensagens das três instruções:

    • (6 linha(s) afetada(s))

    • <The directory information>

    • (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, consulte sqlcmd Utilityou consulte 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 SQL Server, clique na página Geral e marque a caixa Por padrão, abrir novas consultas no modo SQLCMD .

Gravando e editando scripts SQLCMD

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

Para :error e :out, stderr e stdout envia a saída à guia de mensagens.

O Editor de Consultas não oferece suporte aos comandos SQLCMD não listados acima. Na execução de um script que contém palavras-chave do SQLCMD sem suporte, o Editor de Consultas enviará uma mensagem "Ignorando comando <ignored command>" para o destino de cada palavra-chave sem suporte. O script será executado com êxito, mas os comandos sem suporte serã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 tem a capacidade para 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 serão codificados por cores. A codificação por cores para palavras-chave do Transact-SQL permanecerá 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 , seguida dos resultados produzidos pelas instruções Transact-SQL .

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

Consulte Também

Utilitário sqlcmd