Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O sqlcmd utilitário é um utilitário de linha de comando para execução interativa e ad hoc de instruções e scripts Transact-SQL e para automatizar tarefas de script Transact-SQL. Para usar sqlcmd interativamente ou criar arquivos de script a serem executados usando sqlcmd, os usuários devem entender o Transact-SQL. O sqlcmd utilitário normalmente é usado das seguintes maneiras:
Os usuários inserem instruções Transact-SQL de forma interativa, semelhante a trabalhar diretamente no prompt de comando. Os resultados são exibidos no prompt de comando. Para abrir uma janela do Prompt de Comando, clique em Iniciar, clique em Todos os Programas, aponte para Acessórios e clique em Prompt de Comando. No prompt de comando, digite
sqlcmdseguido por uma lista de opções que você deseja. Para obter uma lista completa das opções com suportesqlcmd, consulte o Utilitário sqlcmd.Os usuários enviam um
sqlcmdtrabalho especificando uma única instrução Transact-SQL a ser executada ou apontando o utilitário para um arquivo de texto que contém instruções Transact-SQL a serem executadas. A saída geralmente é direcionada para um arquivo de texto, mas também pode ser exibida no prompt de comando.Modo SQLCMD no Editor de Consultas do SQL Server Management Studio.
SMO (Objetos de Gerenciamento do SQL Server)
Tarefas do SQL Server Agent CmdExec.
Opções de sqlcmd normalmente usadas
As seguintes opções são usadas com mais frequência:
A opção de servidor (-S) que identifica a instância do Microsoft SQL Server à qual
sqlcmdse conecta.Opções de autenticação (-E, -U e -P) que especificam as credenciais que
sqlcmdusam para se conectar à instância do SQL Server.Observação
A opção -E é o padrão e não precisa ser especificada.
Opções de entrada (-Q, -q e -i) que identificam o local da entrada para
sqlcmd.A opção de saída (-o) que especifica o arquivo no qual
sqlcmddeve colocar sua saída.
Conectando-se ao Utilitário sqlcmd
Veja a seguir os usos comuns do sqlcmd utilitário:
Conectando-se a uma instância padrão para interativamente executar instruções Transact-SQL usando a autenticação do Windows.
sqlcmd -S <ComputerName>Observação
No exemplo anterior, -E não é especificado porque é o padrão e
sqlcmdse conecta à instância padrão usando a Autenticação do Windows.Conectando-se a uma instância nomeada usando a Autenticação do Windows para executar comandos Transact-SQL de maneira interativa:
sqlcmd -S <ComputerName>\<InstanceName>ou
sqlcmd -S .\<InstanceName>Conectando-se a uma instância nomeada usando a Autenticação do Windows e especificando arquivos de entrada e saída:
sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt>Conectando-se à instância padrão no computador local usando a Autenticação do Windows, executando uma consulta e permanecendo
sqlcmdem execução após a conclusão da execução da consulta:sqlcmd -q "SELECT * FROM AdventureWorks2012.Person.Person"Conectando-se à instância padrão no computador local usando a Autenticação do Windows, executando uma consulta, direcionando a saída para um arquivo e saindo
sqlcmdapós a conclusão da execução da consulta:sqlcmd -Q "SELECT * FROM AdventureWorks2012.Person.Person" -o MyOutput.txtConectar-se a uma instância nomeada usando a Autenticação do SQL Server para executar interativamente Transact-SQL instruções, solicitando
sqlcmduma senha:sqlcmd -U MyLogin -S <ComputerName>\<InstanceName>Observação
Para ver uma lista das opções compatíveis com o
sqlcmdutilitário, execute:sqlcmd -?.
Executando instruções Transact-SQL interativamente usando sqlcmd
Você pode usar o utilitário sqlcmd de forma interativa para executar instruções Transact-SQL em uma janela do Prompt de Comando. Para executar interativamente Transact-SQL instruções usando sqlcmd, execute o utilitário sem usar as opções -Q, -q, -Z ou -i para especificar quaisquer arquivos ou consultas de entrada. Por exemplo:
sqlcmd -S <ComputerName>\<InstanceName>
Quando o comando é executado sem arquivos de entrada ou consultas, sqlcmd conecta-se à instância especificada do SQL Server e exibe uma nova linha com um 1> sublinhado seguido por um sublinhado piscando que é chamado de sqlcmd prompt. Significa 1 que esta é a primeira linha de uma instrução Transact-SQL e o sqlcmd prompt é o ponto em que a instrução Transact-SQL será iniciada quando você a digitar.
No prompt sqlcmd, você pode digitar instruções Transact-SQL e comandos sqlcmd, como GO e EXIT. Cada instrução Transact-SQL é colocada em um buffer chamado cache de instruções. Essas instruções são enviadas ao SQL Server depois que você digita o GO comando e pressiona ENTER. Para sair sqlcmd, digite EXIT ou QUIT no início de uma nova linha.
Para limpar o cache de instruções, digite :RESET. Digitar ^C faz com que sqlcmd saia.
^C também pode ser usado para interromper a execução do cache de instruções depois que um GO comando tiver sido emitido.
Transact-SQL instruções inseridas em uma sessão interativa podem ser editadas inserindo o comando :ED e o sqlcmd prompt. O editor será aberto e, depois de editar a instrução Transact-SQL e fechar o editor, a instrução Transact-SQL revisada será exibida na janela de comando. Insira GO para executar a instrução Transact-SQL revisada.
Cadeias de caracteres entre aspas
Os caracteres entre aspas são usados sem nenhum pré-processamento adicional, exceto que aspas podem ser inseridas em uma cadeia de caracteres inserindo duas aspas consecutivas. O SQL Server trata esta sequência de caracteres como aspa simples. (No entanto, a tradução ocorre no servidor.) As variáveis de script não serão expandidas quando aparecerem dentro de uma cadeia de caracteres.
Por exemplo:
sqlcmd
PRINT "Length: 5"" 7'";
GO
Aqui está o conjunto de resultados.
Length: 5" 7'
Cadeias de caracteres que abrangem várias linhas
sqlcmd dá suporte a scripts que têm cadeias de caracteres que abrangem várias linhas. Por exemplo, a instrução a seguir SELECT abrange várias linhas, mas é uma única cadeia de caracteres executada quando você pressiona a tecla ENTER após digitar GO.
SELECT First line
FROM Second line
WHERE Third line;
GO
Exemplo de sqlcmd interativo
Este é um exemplo do que você vê quando é executado sqlcmd interativamente.
Quando você abre uma janela do Prompt de Comando, há uma linha semelhante a:
C:\> _
Isso significa que a pasta C:\ é a pasta atual e, se você especificar um nome de arquivo, o Windows procurará o arquivo nessa pasta.
Digite sqlcmd para se conectar à instância padrão do SQL Server no computador local e o conteúdo da janela prompt de comando será:
C:\>sqlcmd
1> _
Isso significa que você se conectou à instância do SQL Server e sqlcmd agora está pronto para aceitar Transact-SQL declarações e sqlcmd comandos. O sublinhado piscando após o 1> é o prompt sqlcmd que indica o local onde as instruções e comandos que você digitar serão exibidos. Agora, digite USE AdventureWorks2012 e pressione ENTER e digite GO e pressione ENTER. O conteúdo da janela prompt de comando será:
sqlcmd
USE AdventureWorks2012;
GO
Aqui está o conjunto de resultados.
Changed database context to 'AdventureWorks2012'.
1> _
Pressionar ENTER após inserir USE AdventureWorks2012 sinalizou sqlcmd para iniciar uma nova linha. Pressionando ENTER, após digitar GO,, você indicou sqlcmd para enviar a instrução USE AdventureWorks2012 para a instância do SQL Server.
sqlcmd em seguida, retornou uma mensagem para indicar que a USE instrução foi concluída com êxito e exibiu um novo 1> prompt como um sinal para inserir uma nova instrução ou comando.
O exemplo a seguir mostra o que a janela do Prompt de Comando contém se você digitar uma instrução SELECT, um comando GO para executar SELECT, e um comando EXIT para sair sqlcmd.
sqlcmd
USE AdventureWorks2012;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Aqui está o conjunto de resultados.
BusinessEntityID FirstName LastName
----------- -------------------------------- -----------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
(3 rows affected)
1> EXIT
C:\>
As linhas após a linha 3> GO são a saída de uma SELECT instrução. Depois de gerar a saída, sqlcmd redefine o sqlcmd prompt e exibe 1>. Depois de EXIT entrar na linha 1>, a janela prompt de comando exibe a mesma linha que quando você a abriu pela primeira vez. Isso indica que sqlcmd a sessão foi encerrada. Agora você pode fechar a janela de prompt de comando digitando outro comando EXIT .
Executando arquivos de script Transact-SQL usando sqlcmd
Você pode usar sqlcmd para executar arquivos de script de banco de dados. Arquivos de script são arquivos de texto que contêm uma combinação de instruções Transact-SQL, sqlcmd comandos e variáveis de script. Para obter mais informações sobre como usar variáveis de script, veja Usar sqlcmd com variáveis de script.
sqlcmd funciona com instruções, comandos e variáveis de script em um arquivo de script de maneira semelhante a como ele funciona com instruções e comandos inseridos interativamente. A principal diferença é que sqlcmd lê o arquivo de entrada sem pausar em vez de esperar que um usuário insira as instruções, os comandos e as variáveis de script.
Existem maneiras diferentes de criar arquivos de script de banco de dados:
Você pode compilar e depurar interativamente um conjunto de instruções Transact-SQL no SQL Server Management Studio e salvar o conteúdo da janela Consulta como um arquivo de script.
Você pode criar um arquivo de texto que contenha instruções Transact-SQL usando um editor de texto, como o Bloco de Notas.
Exemplos
Um. Executando um script usando sqlcmd
Inicie o Bloco de Notas e digite as seguintes declarações Transact-SQL:
USE AdventureWorks2012;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Criar uma pasta nomeada MyFolder e, em seguida, salvar o script como o arquivo MyScript.sql na pasta C:\MyFolder. Insira o seguinte no prompt de comando para executar o script e colocar a saída em MyOutput.txtMyFolder:
sqlcmd -i C:\MyFolder\MyScript.sql -o C:\MyFolder\MyOutput.txt
Ao exibir o conteúdo de MyOutput.txt no Bloco de Notas, você verá o seguinte:
Changed database context to 'AdventureWorks2012'.
BusinessEntityID FirstName LastName
---------------- ----------- -----------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
(3 rows affected)
B. Usando o sqlcmd com uma conexão administrativa dedicada
No exemplo a seguir, sqlcmd é usado para se conectar a um servidor que tem um problema de bloqueio usando a DAC (conexão de administrador dedicada).
C:\>sqlcmd -S ServerName -A
1> SELECT blocked FROM sys.dm_exec_requests WHERE blocked <> 0;
2> GO
Aqui está o conjunto de resultados.
spid blocked
------ -------
62 64
(1 rows affected)
Use sqlcmd para encerrar o processo de bloqueio.
1> KILL 64;
2> GO
C. Usando o sqlcmd para executar um procedimento armazenado
O exemplo a seguir mostra como executar um procedimento armazenado usando sqlcmd. Criar o seguinte procedimento armazenado.
USE AdventureWorks2012;
IF OBJECT_ID ( ' dbo.ContactEmailAddress, 'P' ) IS NOT NULL
DROP PROCEDURE dbo.ContactEmailAddress;
GO
CREATE PROCEDURE dbo.ContactEmailAddress
(
@FirstName nvarchar(50)
,@LastName nvarchar(50)
)
AS
SET NOCOUNT ON
SELECT EmailAddress
FROM Person.Person
WHERE FirstName = @FirstName
AND LastName = @LastName;
SET NOCOUNT OFF
No prompt sqlcmd, insira o seguinte:
C:\sqlcmd
1> :Setvar FirstName Gustavo
1> :Setvar LastName Achong
1> EXEC dbo.ContactEmailAddress $(Gustavo),$(Achong)
2> GO
EmailAddress
-----------------------------
gustavo0@adventure-works.com
D. Usando o sqlcmd para manutenção de banco de dados
O exemplo a seguir mostra como usar sqlcmd para uma tarefa de manutenção de banco de dados. Crie C:\BackupTemplate.sql com o seguinte código.
USE master;
BACKUP DATABASE [$(db)] TO DISK='$(bakfile)';
No prompt sqlcmd, insira o seguinte:
C:\ >sqlcmd
1> :connect <server>
Sqlcmd: Successfully connected to server <server>.
1> :setvar db msdb
1> :setvar bakfile c:\msdb.bak
1> :r c:\BackupTemplate.sql
2> GO
Changed database context to 'master'.
Processed 688 pages for database 'msdb', file 'MSDBData' on file 2.
Processed 5 pages for database 'msdb', file 'MSDBLog' on file 2.
BACKUP DATABASE successfully processed 693 pages in 0.725 seconds (7.830 MB/sec)
E. Usando sqlcmd para executar código em várias instâncias
O código a seguir em um arquivo exibe um script que conecta a duas instâncias. Note o GO antes da conexão com a segunda instância.
:CONNECT <server>\,<instance1>
EXEC dbo.SomeProcedure
GO
:CONNECT <server>\,<instance2>
EXEC dbo.SomeProcedure
GO
E. Retornando saída XML
O exemplo a seguir mostra como a saída XML é retornada sem formatação, em um fluxo contínuo.
C:\>sqlcmd -d AdventureWorks2012
1> :XML ON
1> SELECT TOP 3 FirstName + ' ' + LastName + ', '
2> FROM Person.Person
3> GO
Syed Abbas, Catherine Abel, Kim Abercrombie,
F. Usando sqlcmd em um arquivo de script do Windows
Um sqlcmdcomando como sqlcmd -i C:\InputFile.txt -o C:\OutputFile.txt, pode ser executado em um arquivo .bat junto com o VBScript. Nesse caso, não use opções interativas.
sqlcmd deve ser instalado no computador que está executando o arquivo .bat.
Primeiro, crie os seguintes quatro arquivos:
C:\badscript.sql
SELECT batch_1_this_is_an_error GO SELECT 'batch #2' GOC:\goodscript.sql
SELECT 'batch #1' GO SELECT 'batch #2' GOC:\returnvalue.sql
:exit(select 100) @echo off C:\windowsscript.bat @echo off echo Running badscript.sql sqlcmd -i badscript.sql -b -o out.log if not errorlevel 1 goto next1 echo == An error occurred :next1 echo Running goodscript.sql sqlcmd -i goodscript.sql -b -o out.log if not errorlevel 1 goto next2 echo == An error occurred :next2 echo Running returnvalue.sql sqlcmd -i returnvalue.sql -o out.log echo SQLCMD returned %errorlevel% to the command shell :exitC:\windowsscript.bat
@echo off echo Running badscript.sql sqlcmd -i badscript.sql -b -o out.log if not errorlevel 1 goto next1 echo == An error occurred :next1 echo Running goodscript.sql sqlcmd -i goodscript.sql -b -o out.log if not errorlevel 1 goto next2 echo == An error occurred :next2 echo Running returnvalue.sql sqlcmd -i returnvalue.sql -o out.log echo SQLCMD returned %errorlevel% to the command shell :exit
Em seguida, no prompt de comando, execute C:\windowsscript.bat:
C:\>windowsscript.bat
Running badscript.sql
== An error occurred
Running goodscript.sql
Running returnvalue.sql
SQLCMD returned 100 to the command shell
G. Usando o sqlcmd para definir a criptografia no Banco de Dados SQL do Azure
Um sqlcmdpode ser executado em uma conexão com dados do Banco de Dados SQL para especificar a criptografia e a confiança do certificado. Duas opções de 'sqlcmd''' estão disponíveis:
A opção -N é usada pelo cliente para solicitar uma conexão criptografada. Essa opção é equivalente à opção
ENCRYPT = truedo ADO.net.A opção -C é usada pelo cliente para configurá-lo a confiar implicitamente no certificado do servidor e não validá-lo. Essa opção é equivalente à opção
TRUSTSERVERCERTIFICATE = truedo ADO.net.
O serviço banco de dados SQL não dá suporte a todas as SET opções disponíveis em uma instância do SQL Server. As opções a seguir emitem um erro quando a opção de SET correspondente é definida como ON ou OFF:
SET ANSI_DEFAULTS - Configura padrões ANSI
SET ANSI_NULLS
SET REMOTE_PROC_TRANSACTIONS
SET ANSI_NULL_DEFAULT (configurar padrão ANSI_NULL)
As opções SET a seguir não geram exceções, mas não podem ser usadas. Eles são preteridos:
SET CONCAT_NULL_YIELDS_NULL
SET ANSI_PADDING
SET QUERY_GOVERNOR_COST_LIMIT
Sintaxe
Os exemplos a seguir referem-se a casos em que as configurações do Provedor de Cliente Nativo do SQL Server incluem: ForceProtocolEncryption = False, Trust Server Certificate = No
Conectar usando credenciais do Windows e comunicação criptografada:
SQLCMD -E -N
Conectar usando credenciais do Windows e certificado do servidor confiável:
SQLCMD -E -C
Conectar usando credenciais do Windows, comunicação criptografada e certificado do servidor confiável:
SQLCMD -E -N -C
Os exemplos a seguir referem-se a casos em que as configurações do Provedor de Cliente Nativo do SQL Server incluem: ForceProtocolEncryption = True, TrustServerCertificate = Yes.
Conectar usando credenciais do Windows, comunicação criptografada e certificado do servidor confiável:
SQLCMD -E
Conectar usando credenciais do Windows, comunicação criptografada e certificado do servidor confiável:
SQLCMD -E -N
Conectar usando credenciais do Windows, comunicação criptografada e certificado do servidor confiável:
SQLCMD -E -T
Conectar usando credenciais do Windows, comunicação criptografada e certificado do servidor confiável:
SQLCMD -E -N -C
Se o provedor especificar ForceProtocolEncryption = True , a criptografia será habilitada mesmo que Encrypt=No na cadeia de conexão.
Consulte Também
Utilitário sqlcmd
Usar sqlcmd com variáveis de script
Editar scripts SQLCMD com o Editor de Consultas
Gerenciar etapas de trabalho
Criar uma etapa de trabalho CmdExec