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.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Banco de dados SQL no Microsoft Fabric Preview
O utilitário sqlcmd permite que você insira instruções Transact-SQL, procedimentos do sistema e arquivos de script.
Note
Para descobrir qual variante e versão do sqlcmd está instalada em seu sistema, confira a versão instalada do utilitário sqlcmd. Para obter informações sobre como obter sqlcmd, consulte Baixar e instalar o utilitário sqlcmd.
Além de instruções Transact-SQL no sqlcmd, os comandos a seguir também estão disponíveis:
GO [ <count> ]
:List
[:]RESET
:Error
-
[:]ED
1 :Out
[:]!!
:Perftrace
[:]QUIT
:Connect
[:]EXIT
:On Error
:r
:Help
-
:ServerList
1 -
:XML [ ON | OFF ]
1 :Setvar
:Listvar
1 Não há suporte para Linux ou macOS.
Lembre-se do seguinte ao usar comandos sqlcmd :
Todos os comandos do sqlcmd, exceto
GO
, precisam ser prefixados com dois-pontos (:
).Important
Para manter a compatibilidade com versões anteriores de scripts osql existentes, alguns dos comandos serão reconhecidos por
:
.Os comandossqlcmd serão reconhecidos apenas se aparecerem no início de uma linha.
Todos os comandos sqlcmd não diferenciam maiúsculas de minúsculas.
Cada comando deve estar em uma linha separada. Um comando não pode ser seguido por uma instrução Transact-SQL nem por outro comando.
Comandos são executados imediatamente. Eles não são colocados no buffer de execução como instruções Transact-SQL.
Editing commands
[:]ED
Inicie o editor de textos. Esse editor pode ser usado para editar o lote Transact-SQL atual ou o último lote executado. Para editar o último lote executado, o comando ED
deve ser digitado imediatamente depois da execução do último lote.
O editor de texto é definido pela variável de ambiente SQLCMDEDITOR
. O editor padrão é Edit
. Para alterar o editor, defina a variável de ambiente SQLCMDEDITOR
. Por exemplo, para definir o editor como o Microsoft Notepad, no prompt de comando, digite:
SET SQLCMDEDITOR=notepad
[:]RESET
Limpa o cache de declarações.
:List
Imprime o conteúdo do cache de instrução.
Variables
:Setvar <var> [ "value" ]
Define as variáveis de script do sqlcmd . Variáveis de script têm o seguinte formato: $(VARNAME)
.
Nomes de variáveis não diferenciam maiúsculas de minúsculas.
Variáveis de script podem ser definidas da seguinte forma:
- Implicitamente usando uma opção de linha de comando. Por exemplo, a opção
-l
define a variávelSQLCMDLOGINTIMEOUT
sqlcmd. - Explicitamente, usando o comando
:Setvar
. - Definindo uma variável de ambiente antes de executar o sqlcmd.
Note
A opção -X
previne que variáveis de ambiente sejam passadas para o sqlcmd.
Se uma variável definida com :Setvar
e uma variável de ambiente tiverem o mesmo nome, a variável definida com :Setvar
terá precedência.
Nomes de variáveis não devem conter caracteres de espaço em branco.
Os nomes de variáveis não podem ter a mesma forma que uma expressão variável, como $(var)
.
Se o valor da cadeia de caracteres da variável de script tiver espaços em branco, use aspas. Se não for especificado um valor para uma variável de script, a variável de script será removida.
:Listvar
Exibe uma lista das variáveis de script definidas atualmente.
Note
Somente variáveis de script definidas pelo sqlcmd e variáveis definidas usando o :Setvar
comando são exibidas.
Output commands
:Erro <nome do arquivo> | STDERR | STDOUT
Redirecione toda a saída de erro para o arquivo especificado por filename, para stderr
ou para stdout
. O comando :Error
pode aparecer várias vezes em um script. Por padrão, saída de erro é enviada para stderr
.
filename
Cria e abre um arquivo que receberá a saída. Se o arquivo já existir, será truncado para zero bytes. Se o arquivo não estiver disponível devido a permissões ou outros motivos, a saída não será alternada e será enviada para o último destino especificado ou ao destino padrão.
STDERR
Alterna a saída de erro para o fluxo
stderr
. Se a saída tiver sido redirecionada, o destino para o qual o fluxo é redirecionado receberá a saída de erro.STDOUT
Alterna a saída de erro para o fluxo
stdout
. Se a saída tiver sido redirecionada, o destino para o qual o fluxo é redirecionado receberá a saída de erro.
:Out <filename> | STDERR | STDOUT
Cria e redireciona todos os resultados da consulta para o arquivo especificado por nome do arquivopara stderr
ou stdout
. Por padrão, a saída é enviada para stdout
. Se o arquivo já existir, será truncado para zero bytes. O comando :Out
pode aparecer várias vezes em um script.
:P erftrace <filename> | STDERR | STDOUT
Cria e redireciona todas as informações de rastreamento de desempenho para o arquivo especificado por nome do arquivopara stderr
ou stdout
. Por padrão a saída de rastreamento de desempenho é enviada para stdout
. Se o arquivo já existir, será truncado para zero bytes. O comando :Perftrace
pode aparecer várias vezes em um script.
Comandos de controle de execução
:Em Caso de Erro [ sair | ignorar ]
Define a ação a ser executada no caso de um erro durante a execução de script ou em lote.
Quando a opção exit
é usada, o sqlcmd é encerrado com o valor de erro adequado.
Quando a opção ignore
é usada, o sqlcmd ignora o erro e continua executando o lote ou script. Por padrão, é impressa uma mensagem de erro.
[:]QUIT
Faz com que sqlcmd saia.
[:]EXIT [ ( instrução ) ]
Permite que você use o resultado de uma instrução SELECT
como o valor retornado de sqlcmd. Se numérico, a primeira coluna da última linha do resultado será convertida em um inteiro de 4 bytes (longo). O MS-DOS, o Linux e o macOS transmitem o byte baixo para o processo pai ou para o nível de erro do sistema operacional. O Windows 2000 e versões posteriores transmitem todo o inteiro de 4 bytes. A sintaxe é :EXIT(query)
.
For example:
:EXIT(SELECT @@ROWCOUNT)
É possível incluir também o parâmetro :EXIT
como parte de um arquivo em lote. Por exemplo, no prompt de comando, digite:
sqlcmd -Q ":EXIT(SELECT COUNT(*) FROM '%1')"
O utilitário sqlcmd envia tudo entre os parênteses (()
) para o servidor. Se um procedimento armazenado de sistema selecionar um conjunto e retornar um valor, somente a seleção será retornada. A instrução :EXIT()
sem nada entre os parênteses executa tudo que a precede no lote e então é encerrada sem um valor de retorno.
Quando uma consulta incorreta é especificada, o sqlcmd é encerrado sem um valor retornado.
Aqui está uma lista de formatos EXIT
:
:EXIT
Não executa o lote, em seguida encerra imediatamente e não retorna valor.
:EXIT( )
Executa o lote e então sai imediatamente e não retorna valor algum.
:EXIT(query)
Executa o lote de comandos que inclui a consulta e, em seguida, encerra após retornar os resultados da consulta.
Se RAISERROR
for usado em um script do sqlcmd e for acionado um estado de 127, o sqlcmd encerrará e retornará o ID da mensagem para o cliente. For example:
RAISERROR(50001, 10, 127)
Esse erro fará com que o script do sqlcmd seja encerrado e retorne a ID de mensagem 50001 ao cliente.
Os valores retornados -1
a -99
são reservados pelo SQL Server e o sqlcmd define os seguintes valores retornados adicionais:
Return value | Description |
---|---|
-100 |
Erro encontrado antes de selecionar o valor retornado. |
-101 |
Nenhuma linha encontrada ao se selecionar o valor de retorno. |
-102 |
Erro de conversão ao selecionar valor de retorno. |
GO [count]
GO
sinaliza tanto o término de um lote quanto a execução de qualquer instrução Transact-SQL em cache. O lote é executado várias vezes como lotes separados. Você não pode declarar uma variável mais de uma vez em um lote.
Miscellaneous commands
:r <filename>
Analisa instruções Transact-SQL adicionais e comandos sqlcmd do arquivo especificado pelo nome do arquivo no cache de instruções. filename é lido em relação ao diretório de inicialização no qual o sqlcmd foi executado.
Se o arquivo contiver instruções Transact-SQL que não são seguidas por GO
, insira GO
na linha após :r
.
O arquivo será lido e executado depois que for encontrado um terminador de lote. Podem ser emitidos vários comandos :r
. O arquivo pode incluir qualquer comando sqlcmd, incluindo o terminador de lote GO
.
Note
A contagem de linhas exibida no modo interativo é aumentada em um para cada :r
comando encontrado. O comando :r
aparece na saída do comando de lista.
:ServerList
Lista os servidores configurados localmente e os nomes dos servidores que estão transmitindo na rede.
:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]]
Conecta-se a uma instância do SQL Server. Além disso fecha a conexão atual.
Timeout options:
Value | Behavior |
---|---|
0 |
Wait forever |
n>0 |
Esperar por n segundos |
A variável de script SQLCMDSERVER
reflete a conexão ativa atual.
Se timeout não for especificado, o valor da variável SQLCMDLOGINTIMEOUT
será o padrão.
Se apenas user_name for especificado (como uma opção ou variável de ambiente), será solicitado que o usuário insira uma senha. Os usuários não serão solicitados se as variáveis de ambiente SQLCMDUSER
ou SQLCMDPASSWORD
estiverem definidas. Se você não fornecer opções ou variáveis de ambiente, o modo de Autenticação do Windows será usado para se conectar. Por exemplo, para conectar-se a uma instância, instance1
, do SQL Server, myserver
, usando a segurança integrada você usaria o seguinte comando:
:connect myserver\instance1
Para conectar-se à instância padrão do myserver
usando variáveis de script, você usaria as seguintes configurações:
:setvar myusername test
:setvar myservername myserver
:connect $(myservername) $(myusername)
[:]!! command
Executa comandos de sistema operacional. Para executar um comando do sistema operacional, inicie uma linha com dois pontos de exclamação ( !!
) seguida do comando do sistema operacional. For example:
:!! dir
Note
O comando é executado no computador em que o sqlcmd está sendo executado.
:XML [ ON | OFF ]
Para saber mais, confira Formato de saída XML e Formato de saída JSON neste artigo.
:Help
Lista os comandos sqlcmd, juntamente com uma breve descrição de cada comando.
Nomes de arquivos sqlcmd
Arquivos de entrada dosqlcmd podem ser especificados com a opção -i
ou o comando :r
. Os arquivos de saída podem ser especificados com a opção -o
ou os comandos :Error
, :Out
e :Perftrace
. A seguir algumas diretrizes sobre como trabalhar com esses arquivos:
:Error
,:Out
e:Perftrace
deve usar valores de nome de arquivo separados. Se o mesmo nome de arquivo for usado, as entradas dos comandos poderão ser intermixadas.Se um arquivo de entrada em um servidor remoto for chamado do sqlcmd em um computador local e o arquivo tiver um caminho de arquivo de unidade como
:Out c:\OutputFile.txt
, o arquivo de saída será criado no computador local e não no servidor remoto.Dentre os caminhos de arquivo válidos estão:
C:\<filename>
,\\<Server>\<Share$>\<filename>
e"C:\Some Folder\<file name>"
. Se houver um espaço no caminho, use aspas.Cada nova sessão do sqlcmd substitui os arquivos com nomes iguais.
Informational messages
O sqlcmd imprime qualquer mensagem informativa enviada pelo servidor. No exemplo a seguir, depois que as instruções Transact-SQL são executadas, é impressa uma mensagem informativa.
Start sqlcmd. No prompt de comando do sqlcmd, digite a consulta:
USE AdventureWorks2022;
GO
Quando você pressiona ENTER, a seguinte mensagem informativa é impressa:
Changed database context to 'AdventureWorks2022'.
Formato de saída das consultas do Transact-SQL
Osqlcmd imprime, em primeiro lugar, um cabeçalho de coluna com os nomes de coluna especificados na lista de seleção. Os nomes de coluna são separados usando o caractere SQLCMDCOLSEP
. Por padrão, esse separador de coluna é um espaço. Se o nome de coluna for mais curto do que a largura de coluna, a saída será preenchida com espaços até a coluna seguinte.
Essa linha é seguida por uma linha divisória formada por uma série de traços. A saída a seguir mostra um exemplo.
Start sqlcmd. No prompt de comando do sqlcmd, digite a consulta:
USE AdventureWorks2022;
SELECT TOP (2) BusinessEntityID,
FirstName,
LastName
FROM Person.Person;
GO
Quando você pressiona ENTER, o conjunto de resultados a seguir é retornado.
BusinessEntityID FirstName LastName
---------------- ------------ ----------
285 Syed Abbas
293 Catherine Abel
(2 row(s) affected)
Embora a BusinessEntityID
coluna tenha apenas quatro caracteres de largura, ela se expande para acomodar o nome de coluna mais longo. Por padrão, a saída é finalizada com 80 caracteres. Essa largura pode ser alterada usando a opção -w
ou definindo a variável de script SQLCMDCOLWIDTH
.
formato de saída XML
A saída XML que é o resultado de uma cláusula FOR XML
é gerada, sem formatação, em um fluxo contínuo.
Quando você esperar uma saída XML, use o seguinte comando: :XML ON
.
Note
Osqlcmd retorna mensagens de erro no formato habitual. As mensagens de erro também são produzidas no fluxo de texto XML em formato XML. Ao usar :XML ON
, , o sqlcmd não exibe mensagens informativas.
Para definir o modo XML como desativado, use o seguinte comando: :XML OFF
.
O comando GO
não deve ser exibido antes que o comando :XML OFF
seja emitido, pois o comando :XML OFF
retorna o sqlcmd para a saída orientada por linhas.
Dados XML (em fluxo) e dados de conjunto de linhas não podem ser misturados. Se o comando :XML ON
não tiver sido emitido antes de ser executada uma instrução Transact-SQL que gera fluxo de XML, a saída ficará confusa. Depois que o :XML ON
comando for emitido, você não poderá executar Transact-SQL instruções que geram conjuntos de linhas regulares.
Note
O comando :XML
não dá suporte à instrução SET STATISTICS XML
.
Formato da saída JSON
Quando você espera uma saída JSON, use o seguinte comando: :XML ON
. Caso contrário, a saída incluirá o nome da coluna e o texto JSON. Essa saída não é o JSON válido.
Para definir o modo XML como desativado, use o seguinte comando: :XML OFF
.
Para saber mais, confira Formato de saída XML neste artigo.
Use a autenticação do Microsoft Entra
Exemplos usando autenticação do Microsoft Entra:
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob@contoso.com -P MyAzureADPassword -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob@contoso.com -P MyAzureADPassword -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob@contoso.com -P MyAzureADPassword -l 30