Editando 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 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 escrever 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
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
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.
No menu Consulta, clique em Modo SQLCMD.
O Editor de Consultas executa instruções sqlcmd no contexto do Editor de Consultas.
Na barra de ferramentas Editor SQL, na lista Bancos de Dados Disponíveis, selecione AdventureWorks.
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
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.
No painel Resultados, clique na guia Mensagens para ver as mensagens das três instruções:
(6 row(s) affected)
<As informações de diretório>
(4 row(s) affected)
Importante |
---|
Quando executado na linha de comando, o utilitário sqlcmd permite 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 Abrir novas consultas no modo SQLCMD por padrão.
Escrevendo e editando 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.
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. O texto que vem depois de !! é passado como um parâmetro para o cmd.exe, assim 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 SQLCMD feito pelo SQL Server Management Studio diferencia maiúsculas de minúsculas para variáveis. Por exemplo, PRINT '$ (COMPUTERNAME)' produz o resultado correto, mas PRINT '$(ComputerName)' retorna um erro.
Cuidado |
---|
SQL Server Management Studio usa Microsoft.NET FrameworkSqlClient 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 de SQLCMD. |
Sintaxe SQLCMD com suporte
O Editor de Consultas do Mecanismo de Banco de Dados dá suporte para as 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 saída à guia de mensagens. |
O Editor de Consultas não dá suporte para os 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 <comando ignorado>" 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 junto 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