Partilhar via


Editar scripts SQLCMD com o Editor de Consultas

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do Azure do Azure Synapse AnalyticsAnalytics Platform System (PDW)

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 ao processar comandos do sistema Windows e instruções Transact-SQL no mesmo script.

Modo SQLCMD

Para usar o Editor de Consultas do Mecanismo de Banco de Dados para escrever ou editar scripts SQLCMD, você deve habilitar 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 o ícone Modo SQLCMD na barra de ferramentas ou selecionando Modo SQLCMD no menu Consulta .

Observação

Habilitar o modo SQLCMD desativa o IntelliSense e o depurador Transact-SQL no Editor de Consultas do Mecanismo de Banco de Dados.

Os scripts SQLCMD no Editor de Consultas podem usar os mesmos recursos que todos os scripts Transact-SQL usam. Esses recursos incluem o seguinte:

  • Codificação de cores
  • Execução de scripts
  • Controlo de origem
  • Análise de scripts
  • Plano de exposição

Habilitar scripts SQLCMD no Editor de Consultas

Para ativar o script SQLCMD para 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 do Editor SQL , na lista Bancos de Dados Disponíveis , selecione AdventureWorks2025.

  4. Na janela Editor de Consultas, digite as seguintes instruções Transact-SQL 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 linhas afetadas)
    • <As informações do diretório>
    • (4 linhas afetadas)

Importante

Quando executado a partir da 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, você deve ter 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, consulte o utilitário sqlcmd ou faça o tutorial SQLCMD.

Habilitar scripts SQLCMD por padrão

Para ativar o script SQLCMD por padrão, no menu Ferramentas , selecione Opções, expanda Execução de Consulta e SQL Server, selecione a 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. Aplicam-se as seguintes regras:

  • Os comandos SQLCMD devem ser a primeira instrução em uma linha.

  • Apenas um comando SQLCMD é permitido em cada linha.

  • Os comandos SQLCMD podem ser precedidos por comentários ou espaço em branco.

  • Os comandos SQLCMD dentro de caracteres de comentário não são executados.

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

  • Os comandos do sistema operacional devem ser precedidos por dois pontos de exclamação (!!). O comando dois pontos de exclamação faz com que a instrução que segue os pontos de exclamação seja executada usando o processador de comando cmd.exe. O texto depois de !! é passado como um parâmetro para cmd.exe, de modo que 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 Transact-SQL, todos os comandos SQLCMD precisam ser prefixados com dois pontos (:).

  • O GO comando 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 ou osql internas. O processamento SQLCMD pelo SQL Server Management Studio é sensível a maiúsculas e minúsculas para variáveis. Por exemplo, PRINT '$(COMPUTERNAME)' produz o resultado correto, mas PRINT '$(ComputerName)' retorna um erro.

Atenção

O SQL Server Management Studio usa o Microsoft .NET Framework SqlClient para execução no modo regular e SQLCMD. Quando executado a partir da linha de comando, o SQLCMD usa o provedor OLE DB. Como diferentes opções padrão podem ser aplicadas, você pode obter um comportamento diferente ao executar a mesma consulta no modo SQLCMD do SQL Server Management Studio e no utilitário sqlcmd .

Sintaxe SQLCMD suportada

O Editor de Consultas do Mecanismo de Banco de Dados suporta as 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]]
  • :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.

Os comandos SQLCMD não listados acima não são suportados no Editor de Consultas. Quando um script contendo palavras-chave SQLCMD que não são suportadas é executado, o editor de consultas envia uma mensagem "Ignorando comando <ignorado>" para o destino de cada palavra-chave não suportada. O script é executado com êxito, mas os comandos sem suporte são ignorados.

Atenção

Como você não inicia o SQLCMD a partir da 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, e, 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 de cores em scripts SQLCMD

Com o script SQLCMD habilitado, os scripts são codificados por cores. O código de cores para palavras-chave Transact-SQL permanece o mesmo. Os comandos SQLCMD são apresentados 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, executa duas instruções Transact-SQL SELECT junto com um comando do sistema operacional (para imprimir o diretório atual). O arquivo resultante contém a saída de mensagem da DIR instrução e a saída de resultados das instruções Transact-SQL.

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