Editar scripts SQLCMD com o Editor de Consultas

Com o Editor de Consultas do Mecanismo de Banco de Dados no SQL Server Management Studio, você pode gravar 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çãoObservaçã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

  • Plano de execução

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))

    • <As informações de diretório>

    • (4 linha(s) afetada(s))

Observação importanteImportante

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 Utilitário sqlcmd ou 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 SQLCMS 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 oferece suporte a variáveis de ambiente e variáveis definidas como parte de um script SQLCMD, mas não oferece suporte a variáveis SQLCMD internas ou osql. O processamento de SQLCMD do SQL Server Management Studio diferencia maiúsculas e minúsculas nas variáveis. Por exemplo, PRINT '$ (COMPUTERNAME)' produz o resultado correto, mas PRINT '$(ComputerName)' retorna um erro.

Observação sobre cuidadosCuidado

O SQL Server Management Studio usa o Microsoft .NET Framework SqlClient para a execução em modo regular 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çãoObservaçã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 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.

Observação sobre cuidadosCuidado

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

Referência

Utilitário sqlcmd