sqlcmd Utilitysqlcmd Utility

O sqlcmd utilitário permite que você insira Transact-SQLTransact-SQL instruções, procedimentos do sistema e arquivos de script no prompt de comando, na Editor de consultas no modo SQLCMD, em um arquivo de script do Windows ou em uma etapa de trabalho do sistema operacional (Cmd.exe) de um SQL ServerSQL Server Trabalho do agente.The sqlcmd utility lets you enter Transact-SQLTransact-SQL statements, system procedures, and script files at the command prompt, in Query Editor in SQLCMD mode, in a Windows script file or in an operating system (Cmd.exe) job step of a SQL ServerSQL Server Agent job. Esse utilitário usa ODBC para executar lotes Transact-SQLTransact-SQL.This utility uses ODBC to execute Transact-SQLTransact-SQL batches.

Importante

SQL Server Management StudioSQL Server Management Studio usa o MicrosoftMicrosoft .NET Framework.NET FrameworkSqlClient para execução no normal e o modo SQLCMD na Editor de consultas.uses the MicrosoftMicrosoft.NET Framework.NET FrameworkSqlClient for execution in regular and SQLCMD mode in Query Editor. Quando sqlcmd é executado na linha de comando, sqlcmd usa o driver ODBC.When sqlcmd is run from the command line, sqlcmd uses the ODBC driver. Devido às diversas opções padrão que podem ser aplicadas, é possível observar um comportamento diferente ao executar a mesma consulta no SQL Server Management StudioSQL Server Management Studio no Modo SQLCMD e no utilitário sqlcmd.Because different default options may apply, you might see different behavior when you execute the same query in SQL Server Management StudioSQL Server Management Studio in SQLCMD Mode and in the sqlcmd utility.

Atualmente, sqlcmd não requer um espaço entre a opção de linha de comando e o valor.Currently, sqlcmd does not require a space between the command line option and the value. Porém, em uma versão futura, um espaço pode ser necessário entre a opção de linha de comando e o valor.However, in a future release, a space may be required between the command line option and the value.

SintaxeSyntax

  
   sqlcmd  
   -a  
   packet_size  
   -A (dedicated administrator connection)  
-b (terminate batch job if there is an error)  
-cbatch_terminator-C (trust the server certificate)  
-ddb_name-e (echo input)  
-E (use trusted connection)  
-fcodepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]  
-hrows_per_header-Hworkstation_name-iinput_file-I (enable quoted identifiers)  
-k[1 | 2] (remove or replace control characters)  
-Kapplication_intent-llogin_timeout-L[c] (list servers, optional clean output)  
-merror_level-Mmultisubnet_failover-N (encrypt connection)  
-ooutput_file-p[1] (print statistics, optional colon format)  
-Ppassword-q "cmdline query"-Q "cmdline query" (and exit)  
-r[0 | 1] (msgs to stderr)  
-R (use client regional settings)  
-scol_separator-S [protocol:]server[\instance_name][,port]  
-tquery_timeout-u (unicode output file)  
-Ulogin_id-vvar = "value"-Verror_severity_level-wcolumn_width-W (remove trailing spaces)  
-x (disable variable substitution)  
-X[1] (disable commands, startup script, environment variables and optional exit)  
-yvariable_length_type_display_width-Yfixed_length_type_display_width-znew_password -Znew_password (and exit)  
  
-? (usage)  

Opções de linha de comandoCommand-line Options

Opções relacionadas a logonLogin-Related Options
-A-A
Fazer logon no SQL ServerSQL Server com uma DAC (conexão de administrador dedicada).Logs in to SQL ServerSQL Server with a Dedicated Administrator Connection (DAC). Esse tipo de conexão é usado para solucionar um problema no servidor.This kind of connection is used to troubleshoot a server. Isso funcionará apenas com computadores servidor que oferecem suporte para DAC.This will only work with server computers that support DAC. Se a DAC não estiver disponível, o sqlcmd gerará uma mensagem de erro e será encerrado.If DAC is not available, sqlcmd generates an error message and then exits. Para obter mais informações sobre a DAC, consulte Conexão de diagnóstico para administradores de banco de dados.For more information about DAC, see Diagnostic Connection for Database Administrators.

-C-C
Essa opção é usada pelo cliente para configurá-lo para confiar implicitamente no certificado do servidor sem validação.This switch is used by the client to configure it to implicitly trust the server certificate without validation. Essa opção é equivalente à opção TRUSTSERVERCERTIFICATE = truedo ADO.NET.This option is equivalent to the ADO.NET option TRUSTSERVERCERTIFICATE = true.

-d db_name-d db_name
Problemas de um USE db_name instrução ao iniciar sqlcmd.Issues a USE db_name statement when you start sqlcmd. Essa opção define a variável de script SQLCMDDBNAME do sqlcmd.This option sets the sqlcmd scripting variable SQLCMDDBNAME. Isso especifica o banco de dados inicial.This specifies the initial database. O padrão é a propriedade do banco de dados padrão de seu logon.The default is your login's default-database property. Se o banco de dados não existir, será gerada uma mensagem de erro e o sqlcmd é encerrado.If the database does not exist, an error message is generated and sqlcmd exits.

-l login_timeout-l login_timeout
Especifica o número de segundos antes que um logon do sqlcmd para o driver ODBC expire, ao tentar conectar a um servidor.Specifies the number of seconds before a sqlcmd login to the ODBC driver times out when you try to connect to a server. Essa opção define a variável de script SQLCMDLOGINTIMEOUT do sqlcmd.This option sets the sqlcmd scripting variable SQLCMDLOGINTIMEOUT. O tempo limite padrão de logon do sqlcmd é de oito segundos.The default time-out for login to sqlcmd is eight seconds. O tempo limite do logon deve ser um número entre 0 e 65534.The login time-out must be a number between 0 and 65534. O sqlcmd irá gerar uma mensagem de erro se o valor fornecido não for numérico ou não estiver nesse intervalo.If the value supplied is not numeric or does not fall into that range, sqlcmd generates an error message. Um valor de 0 especifica o tempo limite como infinito.A value of 0 specifies time-out to be infinite.

-E-E
Usa uma conexão confiável em vez de um nome de usuário e senha para fazer logon no SQL ServerSQL Server.Uses a trusted connection instead of using a user name and password to log on to SQL ServerSQL Server. Por padrão, sem a especificação de -E, sqlcmd usa a opção de conexão confiável.By default, without -E specified, sqlcmd uses the trusted connection option.

A opção -E ignora possíveis definições de variável de ambiente de nome de usuário e senha como SQLCMDPASSWORD.The -E option ignores possible user name and password environment variable settings such as SQLCMDPASSWORD. Se a opção -E for usada com as opções -U ou -P , uma mensagem de erro será gerada.If the -E option is used together with the -U option or the -P option, an error message is generated.

-H workstation_name-H workstation_name
Um nome de estação de trabalho.A workstation name. Essa opção define a variável de script SQLCMDWORKSTATION do sqlcmd.This option sets the sqlcmd scripting variable SQLCMDWORKSTATION. O nome da estação de trabalho é listado na coluna hostname da exibição de catálogo sys.processes e pode ser retornado usando o procedimento armazenado sp_who.The workstation name is listed in the hostname column of the sys.processes catalog view and can be returned using the stored procedure sp_who. Se essa opção não for especificada, o padrão será o nome do computador atual.If this option is not specified, the default is the current computer name. Esse nome pode ser usado para identificar sessões sqlcmd diferentes.This name can be used to identify different sqlcmd sessions.

-K application_intent-K application_intent
Declara o tipo de carga de trabalho de aplicativo ao conectar-se a um servidor.Declares the application workload type when connecting to a server. O único valor com suporte no momento é ReadOnly.The only currently supported value is ReadOnly. Se -K não estiver especificado, o utilitário sqlcmd não terá suporte à conectividade com uma réplica secundária em um grupo de disponibilidade AlwaysOn.If -K is not specified, the sqlcmd utility will not support connectivity to a secondary replica in an AlwaysOn availability group. Para obter mais informações, confira Secundárias ativas: Réplicas secundárias legíveis.For more information, see Active Secondaries: Readable Secondary Replicas.

-M multisubnet_failover-M multisubnet_failover
Sempre especifique -M ao conectar-se ao ouvinte de um grupo de disponibilidade do SQL ServerSQL Server ou de uma instância de cluster de failover do SQL ServerSQL Server.Always specify -M when connecting to the availability group listener of a SQL ServerSQL Server availability group or a SQL ServerSQL Server Failover Cluster Instance. -M proporciona a detecção mais rápida e a conexão com o servidor (atualmente) ativo.-M provides for faster detection of and connection to the (currently) active server. Se -M não for especificada, -M ficará desativada.If -M is not specified, -M is off. Para obter mais informações sobre Grupos de Disponibilidade AlwaysOnAlways On Availability Groups, consulte ouvintes do grupo de disponibilidade, conectividade de cliente e Failover de aplicativo (SQL Server), criação e configuração dos grupos de disponibilidade (SQL Server), Clustering de Failover e grupos de disponibilidade AlwaysOn (SQL Server), e secundárias ativas: Réplicas secundárias legíveis .For more information about Grupos de Disponibilidade AlwaysOnAlways On Availability Groups, see Availability Group Listeners, Client Connectivity, and Application Failover (SQL Server), Creation and Configuration of Availability Groups (SQL Server), Failover Clustering and AlwaysOn Availability Groups (SQL Server), and Active Secondaries: Readable Secondary Replicas .

-N-N
Essa opção é usada pelo cliente para solicitar uma conexão criptografada.This switch is used by the client to request an encrypted connection.

-P password-P password
É uma senha especificada pelo usuário.Is a user-specified password. Senhas diferenciam maiúsculas e minúsculas.Passwords are case sensitive. Se a opção - U for usada e o -P opção não for usada, e a variável de ambiente SQLCMDPASSWORD não tiver sido definida, sqlcmd solicita ao usuário uma senha.If the -U option is used and the -P option is not used, and the SQLCMDPASSWORD environment variable has not been set, sqlcmd prompts the user for a password. Se o -P opção é usada no final do prompt de comando sem uma senha sqlcmd usa a senha padrão (NULL).If the -P option is used at the end of the command prompt without a password sqlcmd uses the default password (NULL).

Importante

Não use uma senha em branco.Do not use a blank password. Use uma senha forte.Use a strong password. Para saber mais, confira Strong Passwords.For more information, see Strong Passwords.

A solicitação de senha é exibida no console, como a seguir: Password:The password prompt is displayed by printing the password prompt to the console, as follows: Password:

A entrada do usuário está oculta.User input is hidden. Isso significa que nada é exibido e o cursor fica em posição.This means that nothing is displayed and the cursor stays in position.

A variável de ambiente SQLCMDPASSWORD lhe permite definir uma senha padrão para a sessão atual.The SQLCMDPASSWORD environment variable lets you set a default password for the current session. Assim, senhas não têm de ser hard-coded em arquivos em lote.Therefore, passwords do not have to be hard-coded into batch files.

O exemplo a seguir define, em primeiro lugar, a variável SQLCMDPASSWORD no prompt de comando e acessa o utilitário sqlcmd.The following example first sets the SQLCMDPASSWORD variable at the command prompt and then accesses the sqlcmd utility. No prompt de comando, digite:At the command prompt, type:

SET SQLCMDPASSWORD= p@a$$w0rd

Importante

A senha estará visível para qualquer um que tiver acesso ao monitor do seu computador.The password will be visible to anyone who can see your computer monitor.

No prompt de comando a seguir, digite:At the following command prompt, type:

sqlcmd

Se a combinação de nome de usuário e senha estiver incorreta, uma mensagem de erro será gerada.If the user name and password combination is incorrect, an error message is generated.

Observação

A variável de ambiente OSQLPASSWORD foi mantida para compatibilidade com versões anteriores.The OSQLPASSWORD environment variable has been kept for backward compatibility. A variável de ambiente SQLCMDPASSWORD tem precedência sobre a variável de ambiente OSQLPASSWORD; Isso significa que sqlcmd e osql podem ser usados próximos um do outro sem interferência e que scripts antigos continuarão a funcionar.The SQLCMDPASSWORD environment variable takes precedence over the OSQLPASSWORD environment variable; this means that sqlcmd and osql can be used next to each other without interference and that old scripts will continue to work.

Será gerada uma mensagem de erro se a opção -P for usada com a opção -E .If the -P option is used with the -E option, an error message is generated.

Se a opção -P for seguida de mais de um argumento, uma mensagem de erro será gerada e o programa será fechado.If the -P option is followed by more than one argument, an error message is generated and the program exits.

-S [protocol:]server[ \ instance_name][ , port]-S [protocol:]server[\instance_name][,port]
Especifica uma instância do SQL ServerSQL Server à qual se conectar.Specifies the instance of SQL ServerSQL Server to which to connect. Define a variável de script SQLCMDSERVER do sqlcmd.It sets the sqlcmd scripting variable SQLCMDSERVER.

Especifique server_name para se conectar à instância padrão do SQL ServerSQL Server nesse computador servidor.Specify server_name to connect to the default instance of SQL ServerSQL Server on that server computer. Especifique server_name [ \ instance_name ] para se conectar a uma instância nomeada do SQL ServerSQL Server nesse computador servidor.Specify server_name [ \instance_name ] to connect to a named instance of SQL ServerSQL Server on that server computer. Se nenhum servidor for especificado, o sqlcmd irá se conectar à instância padrão do SQL ServerSQL Server no computador local.If no server computer is specified, sqlcmd connects to the default instance of SQL ServerSQL Server on the local computer. Essa opção é necessária quando se executa o sqlcmd de um computador remoto na rede.This option is required when you execute sqlcmd from a remote computer on the network.

protocolo pode ser tcp (TCP/IP), lpc (memória compartilhada), ou np (pipes nomeados).protocol can be tcp (TCP/IP), lpc (shared memory), or np (named pipes).

Se você não especificar uma nome_do_servidor [ \ instance_name ] ao iniciar o sqlcmd, SQL ServerSQL Server verifica e usa o Variável de ambiente SQLCMDSERVER.If you do not specify a server_name [ \instance_name ] when you start sqlcmd, SQL ServerSQL Server checks for and uses the SQLCMDSERVER environment variable.

Observação

A variável de ambiente OSQLSERVER foi mantida para compatibilidade com versões anteriores.The OSQLSERVER environment variable has been kept for backward compatibility. A variável de ambiente SQLCMDSERVER tem precedência sobre a variável de ambiente OSQLSERVER; Isso significa que sqlcmd e osql podem ser usados próximos um do outro sem interferência e que scripts antigos continuarão a funcionar.The SQLCMDSERVER environment variable takes precedence over the OSQLSERVER environment variable; this means that sqlcmd and osql can be used next to each other without interference and that old scripts will continue to work.

-U login_id-U login_id
É a identificação de logon do usuário.Is the user login ID.

Observação

A variável de ambiente OSQLUSER está disponível para compatibilidade com versões anteriores.The OSQLUSER environment variable is available for backward compatibility. A variável de ambiente SQLCMDUSER tem precedência em relação à variável de ambiente OSQLUSER.The SQLCMDUSER environment variable takes precedence over the OSQLUSER environment variable. Isso significa que sqlcmd e osql podem ser usados próximos um do outro sem interferência.This means that sqlcmd and osql can be used next to each other without interference. Significa também que scripts osql existentes continuarão funcionando.It also means that existing osql scripts will continue to work.

Se nem o - U opção nem a -P opção for especificada, sqlcmd tenta se conectar usando MicrosoftMicrosoft modo de autenticação do Windows.If neither the -U option nor the -P option is specified, sqlcmd tries to connect by using MicrosoftMicrosoft Windows Authentication mode. A autenticação baseia-se na conta do Windows do usuário que está executando o sqlcmd.Authentication is based on the Windows account of the user who is running sqlcmd.

Se a opção -U for usada com a opção -E (descrita adiante neste tópico), uma mensagem de erro será gerada.If the -U option is used with the -E option (described later in this topic), an error message is generated. Se a opção -U for seguida de mais de um argumento, uma mensagem de erro será gerada e o programa será encerrado.If the -U option is followed by more than one argument, an error message is generated and the program exits.

-z new_password-z new_password
Alterar senha:Change password:

sqlcmd -U someuser -P s0mep@ssword -z a_new_p@a$$w0rd

-Z new_password-Z new_password
Alterar senha e sair:Change password and exit:

sqlcmd -U someuser -P s0mep@ssword -Z a_new_p@a$$w0rd

Opções de entrada/saídaInput/Output Options
-f codepage | i: codepage[ ,o: codepage] | o: codepage[ ,i: codepage]-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]
Especifica as páginas de código de entrada e saída.Specifies the input and output code pages. O número da página de código é um valor numérico que especifica um código de página instalada do Windows.The codepage number is a numeric value that specifies an installed Windows code page.

Regras de conversão de página de código:Code-page conversion rules:

  • Se não for especificada nenhuma página de código, o sqlcmd usará a página de código atual para arquivos de entrada e de saída, a menos que o arquivo de entrada seja um arquivo Unicode, para o qual não é necessária nenhuma conversão.If no code pages are specified, sqlcmd will use the current code page for both input and output files, unless the input file is a Unicode file, in which case no conversion is required.

  • O sqlcmd reconhece automaticamente arquivos de entrada Unicode big-endian e little-endian.sqlcmd automatically recognizes both big-endian and little-endian Unicode input files. Se a opção -u tiver sido especificada, a saída sempre será Unicode little endian.If the -u option has been specified, the output will always be little-endian Unicode.

  • Se não for especificado nenhum arquivo de saída, a página de código de saída será a página de código de console.If no output file is specified, the output code page will be the console code page. Isso habilita a saída a ser exibida corretamente no console.This enables the output to be displayed correctly on the console.

  • Assume-se que arquivos de entrada múltiplos tenham a mesma página de código.Multiple input files are assumed to be of the same code page. Arquivos de entrada Unicode e não Unicode podem ser misturados.Unicode and non-Unicode input files can be mixed.

Digite chcp no prompt de comando para verificar a página de código de Cmd.exe.Enter chcp at the command prompt to verify the code page of Cmd.exe.

-i input_file[ , input_file2...]-i input_file[,input_file2...]
Identifica o arquivo que contém um lote de instruções SQL ou procedimentos armazenados.Identifies the file that contains a batch of SQL statements or stored procedures. Poderão ser especificados vários arquivos para serem lidos e processados em ordem.Multiple files may be specified that will be read and processed in order. Não use espaço entre nomes de arquivos.Do not use any spaces between file names. sqlcmd verificará primeiramente se todos os arquivos especificados existem.sqlcmd will first check to see whether all the specified files exist. Se um ou mais arquivos não existirem, o sqlcmd será encerrado.If one or more files do not exist, sqlcmd will exit. As opções -i e Q/-q são mutuamente exclusivas.The -i and the -Q/-q options are mutually exclusive.

Exemplos de caminho:Path examples:

-i c:\< nome do arquivo>-i C:\<filename>

-i \\<Server>\<Share$>\<filename>-i \\<Server>\<Share$>\<filename>

-i "C:\Alguma Pasta\<nome do arquivo>"-i "C:\Some Folder\<file name>"

Os nomes de caminhos que contêm espaços deverão ficar entre aspas.File paths that contain spaces must be enclosed in quotation marks.

Essa opção pode ser usada mais de uma vez: -iinput_file -II input_file.This option may be used more than once: -iinput_file -II input_file.

-o output_file-o output_file
Identifica o arquivo que recebe a saída do sqlcmd.Identifies the file that receives output from sqlcmd.

Se -u for especificado, output_file será armazenado no formato Unicode.If -u is specified, the output_file is stored in Unicode format. Se o nome do arquivo for inválido, uma mensagem de erro será gerada e o sqlcmd será encerrado.If the file name is not valid, an error message is generated, and sqlcmd exits. O sqlcmd não oferece suporte à gravação simultânea de vários processos sqlcmd no mesmo arquivo.sqlcmd does not support concurrent writing of multiple sqlcmd processes to the same file. A saída de arquivo será corrompida ou incorreta.The file output will be corrupted or incorrect. Consulte a opção -f para obter mais informações sobre formatos de arquivo.See the -f switch for more information about file formats. Caso não exista, esse arquivo será criado.This file will be created if it does not exist. Será substituído um arquivo com o mesmo nome de uma sessão sqlcmd anterior.A file of the same name from a prior sqlcmd session will be overwritten. O arquivo aqui especificado não é o arquivo stdout .The file specified here is not the stdout file. Se for especificado um arquivo stdout este arquivo não será usado.If a stdout file is specified this file will not be used.

Exemplos de caminho:Path examples:

-o C:\< filename>-o C:\< filename>

-o \\<Server>\<Share$>\<filename>-o \\<Server>\<Share$>\<filename>

-o " C:\Alguma Pasta\<nome do arquivo>"-o " C:\Some Folder\<file name>"

Os nomes de caminhos que contêm espaços deverão ficar entre aspas.File paths that contain spaces must be enclosed in quotation marks.

-r[0 | 1]-r[0 | 1]
Redireciona a saída da mensagem de erro para a tela (stderr).Redirects the error message output to the screen (stderr). Se você não especificar um parâmetro ou se especificar 0, serão redirecionadas somente mensagens de erro com nível de severidade 11 ou acima disso.If you do not specify a parameter or if you specify 0, only error messages that have a severity level of 11 or higher are redirected. Se você especificar 1, serão redirecionadas todas as saídas de mensagens de erro inclusive PRINT.If you specify 1, all error message output including PRINT is redirected. Não tem nenhum efeito se você usar -o.Has no effect if you use -o. Por padrão, mensagens são envidadas para stdout.By default, messages are sent to stdout.

-R-R
Faz com que sqlcmd localizar numérico, moeda, data e colunas de hora recuperadas do SQL ServerSQL Server com base na localidade do cliente.Causes sqlcmd to localize numeric, currency, date, and time columns retrieved from SQL ServerSQL Server based on the client's locale. Por padrão, essas colunas são exibidas usando as configurações regionais do servidor.By default, these columns are displayed using the server's regional settings.

-u-u
Especifica se output_file é armazenado no formato Unicode, independentemente do formato de input_file.Specifies that output_file is stored in Unicode format, regardless of the format of input_file.

Opções de execução de consultasQuery Execution Options
-e-e
Grava scripts de entrada no dispositivo de saída padrão (stdout).Writes input scripts to the standard output device (stdout).

-I-I
Define a opção de conexão SET QUOTED_IDENTIFIER como ON.Sets the SET QUOTED_IDENTIFIER connection option to ON. Por padrão, ela é definida como OFF.By default, it is set to OFF. Para obter mais informações, veja SET QUOTED_IDENTIFIER (Transact-SQL).For more information, see SET QUOTED_IDENTIFIER (Transact-SQL).

-q" cmdline query "-q" cmdline query "
Executa uma consulta quando sqlcmd é iniciado, mas não encerra sqlcmd quando a consulta for concluída.Executes a query when sqlcmd starts, but does not exit sqlcmd when the query has finished running. Podem ser executadas consultas delimitadas por vários ponto e vírgula.Multiple-semicolon-delimited queries can be executed. Use aspas na consulta, conforme o exemplo a seguir.Use quotation marks around the query, as shown in the following example.

No prompt de comando, digite:At the command prompt, type:

sqlcmd -d AdventureWorks2012 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"

sqlcmd -d AdventureWorks2012 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"

Importante

Não use o terminador GO na consulta.Do not use the GO terminator in the query.

Se for especificado -b juntamente com essa opção, sqlcmd será encerrado com erro.If -b is specified together with this option, sqlcmd exits on error. -b é descrita posteriormente neste tópico.-b is described later in this topic.

-Q" cmdline query "-Q" cmdline query "
Executa uma consulta quando sqlcmd é iniciado e imediatamente encerra sqlcmd.Executes a query when sqlcmd starts and then immediately exits sqlcmd. Podem ser executadas consultas delimitadas por vários ponto e vírgula.Multiple-semicolon-delimited queries can be executed.

Use aspas na consulta, conforme o exemplo a seguir.Use quotation marks around the query, as shown in the following example.

No prompt de comando, digite:At the command prompt, type:

sqlcmd -d AdventureWorks2012 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"

sqlcmd -d AdventureWorks2012 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"

Importante

Não use o terminador GO na consulta.Do not use the GO terminator in the query.

Se for especificado -b juntamente com essa opção, sqlcmd será encerrado com erro.If -b is specified together with this option, sqlcmd exits on error. -b é descrita posteriormente neste tópico.-b is described later in this topic.

-t query_timeout-t query_timeout
Especifica quanto segundos faltam para que um comando (ou instrução SQL) expire. Essa opção define a sqlcmd variável de script SQLCMDSTATTIMEOUT.Specifies the number of seconds before a command (or SQL statement) times out. This option sets the sqlcmd scripting variable SQLCMDSTATTIMEOUT. Se um valor time_out não for especificado, o comando não atingirá o tempo limite. O query**time_out precisa ser um número entre 1 e 65534.If a time_out value is not specified, the command does not time out. The query**time_out must be a number between 1 and 65534. O sqlcmd irá gerar uma mensagem de erro se o valor fornecido não for numérico ou não estiver nesse intervalo.If the value supplied is not numeric or does not fall into that range, sqlcmd generates an error message.

Observação

O valor do tempo limite real poderá variar em relação ao valor time_out especificado em vários segundos.The actual time out value may vary from the specified time_out value by several seconds.

-vvar = value[ var = value...]-vvar = value[ var = value...]
Cria uma sqlcmdvariável de script que pode ser usado em um sqlcmd script.Creates a sqlcmdscripting variable that can be used in a sqlcmd script. Se o valor contiver espaços, mantenha-o entre aspas.Enclose the value in quotation marks if the value contains spaces. Você pode especificar vários var = " values " valores.You can specify multiple var="values" values. Se houver erros em quaisquer dos valores especificados, o sqlcmd irá gerar uma mensagem de erro e então será encerrado.If there are errors in any of the values specified, sqlcmd generates an error message and then exits.

sqlcmd -v MyVar1=something MyVar2="some thing"

sqlcmd -v MyVar1=something -v MyVar2="some thing"

-x-x
Faz com que o sqlcmd ignore variáveis de script.Causes sqlcmd to ignore scripting variables. Isso é útil quando um script contém muitas instruções INSERT que podem conter cadeias de caracteres que têm o mesmo formato de variáveis regulares, como $(variable_name).This is useful when a script contains many INSERT statements that may contain strings that have the same format as regular variables, such as $(variable_name).

Opções de formataçãoFormatting Options
-h headers-h headers
Especifica o número de linhas a imprimir entre os títulos da coluna.Specifies the number of rows to print between the column headings. O padrão é imprimir títulos uma vez para cada conjunto de resultados de consulta.The default is to print headings one time for each set of query results. Essa opção define a variável de script SQLCMDHEADERS do sqlcmd.This option sets the sqlcmd scripting variable SQLCMDHEADERS. Use -1 para especificar que os cabeçalhos não devem ser impressos.Use -1 to specify that headers must not be printed. Qualquer valor inválido faz com que o sqlcmd gere uma mensagem de erro e então seja encerrado.Any value that is not valid causes sqlcmd to generate an error message and then exit.

-k [1 | 2]-k [1 | 2]
Remove todos os caracteres de controle, como tabulações e caracteres de nova linha, da saída.Removes all control characters, such as tabs and new line characters from the output. Isso preserva a formatação de coluna quando os dados são retornados.This preserves column formatting when data is returned. Se for especificado 1, os caracteres de controle serão substituídos por um único espaço.If 1 is specified, the control characters are replaced by a single space. Se for especificado 2, os caracteres de controle consecutivos serão substituídos por um único espaço.If 2 is specified, consecutive control characters are replaced by a single space. -k é igual a -k1.-k is the same as -k1.

-s col_separator-s col_separator
Especifica o caractere do separador de coluna.Specifies the column-separator character. O padrão é um espaço em branco.The default is a blank space. Essa opção define a variável de script SQLCMDCOLSEP do sqlcmd.This option sets the sqlcmd scripting variable SQLCMDCOLSEP. Para usar caracteres com um significado especial para o sistema operacional como, por exemplo, E comercial (&) ou ponto e vírgula (;), use-os entre aspas (").To use characters that have special meaning to the operating system such as the ampersand (&), or semicolon (;), enclose the character in quotation marks ("). O separador de coluna pode ser qualquer caractere de 8 bits.The column separator can be any 8-bit character.

-w column_width-w column_width
Especifica a largura de tela para saída.Specifies the screen width for output. Essa opção define a variável de script SQLCMDCOLWIDTH do sqlcmd.This option sets the sqlcmd scripting variable SQLCMDCOLWIDTH. A largura da coluna deve ser um número maior que 8 e menor que 65536.The column width must be a number greater than 8 and less than 65536. Se a largura da coluna especificada não estiver nesse intervalo, o sqlcmd irá gerar uma mensagem de erro.If the specified column width does not fall into that range, sqlcmd generates and error message. A largura padrão é 80 caracteres.The default width is 80 characters. Quando uma linha de saída excede a largura de coluna especificada, ela inclui a próxima linha.When an output line exceeds the specified column width, it wraps on to the next line.

-W-W
Essa opção remove espaços à direita de uma coluna.This option removes trailing spaces from a column. Use esta opção com a opção -s ao preparar dados a serem exportados para outro aplicativo.Use this option together with the -s option when preparing data that is to be exported to another application. Ela não pode ser usada com as opções -y ou -Y .Cannot be used with the -y or -Y options.

-y variable_length_type_display_width-y variable_length_type_display_width
Define a variável de script SQLCMDMAXVARTYPEWIDTH do sqlcmd.Sets the sqlcmd scripting variable SQLCMDMAXVARTYPEWIDTH. O padrão é 256.The default is 256. Ele limita o número de caracteres retornados para os tipos de dados com comprimento variável grande:It limits the number of characters that are returned for the large variable length data types:

  • varchar(max)

  • nvarchar(max)

  • varbinary(max)

  • xml

  • UDT (user-defined data types)

  • text

  • ntext

  • image

Observação

UDTs podem ter comprimento fixo dependendo da implementação.UDTs can be of fixed length depending on the implementation. Se esse tamanho de UDT de tamanho fixo for mais curto que display_width, o valor do UDT retornado não será afetado.If this length of a fixed length UDT is shorter that display_width, the value of the UDT returned is not affected. Porém, se o tamanho for mais longo que display_width, a saída será truncada.However, if the length is longer than display_width, the output is truncated.

Importante

Use a opção -y 0 com muito cuidado, porque isso poderá causar graves problemas de desempenho tanto no servidor quanto na rede, dependendo do tamanho dos dados retornados.Use the -y 0 option with extreme caution because it may cause serious performance issues on both the server and the network, depending on the size of data returned.

-Y fixed_length_type_display_width-Y fixed_length_type_display_width
Define a variável de script SQLCMDMAXFIXEDTYPEWIDTH do sqlcmd.Sets the sqlcmd scripting variable SQLCMDMAXFIXEDTYPEWIDTH. O padrão é 0 (ilimitado).The default is 0 (unlimited). Limita o número de caracteres retornado para os tipos de dados a seguir:Limits the number of characters that are returned for the following data types:

  • char( n ), em que 1 < = n < = 8000char( n ), where 1<=n<=8000

  • nchar(n n ), em que 1 < = n < = 4000nchar(n n ), where 1<=n<=4000

  • varchar(n n ), em que 1 < = n < = 8000varchar(n n ), where 1<=n<=8000

  • nvarchar(n n ), em que 1 < = n < = 4000nvarchar(n n ), where 1<=n<=4000

  • varbinary(n n ), em que 1 < = n < = 4000varbinary(n n ), where 1<=n<=4000

  • variant

Opções de relatório de errosError Reporting Options
-b
Especifica que o sqlcmd é encerrado e retorna um valor DOS ERRORLEVEL em caso de erro.Specifies that sqlcmd exits and returns a DOS ERRORLEVEL value when an error occurs. O valor que é retornado à variável DOS ERRORLEVEL é 1 quando a mensagem de erro SQL ServerSQL Server tiver um nível de severidade maior do que 10; caso contrário, o valor retornado é 0.The value that is returned to the DOS ERRORLEVEL variable is 1 when the SQL ServerSQL Server error message has a severity level greater than 10; otherwise, the value returned is 0. Se a opção -V tiver sido definida além de -b, o sqlcmd não relatará um erro se o nível de severidade for inferior aos valores definidos usando -V.If the -V option has been set in addition to -b, sqlcmd will not report an error if the severity level is lower than the values set using -V. Arquivos em lote do prompt de comando podem testar o valor de ERRORLEVEL e tratar o erro adequadamente.Command prompt batch files can test the value of ERRORLEVEL and handle the error appropriately. sqlcmd não relata erros para nível de severidade 10 (mensagens informativas).sqlcmd does not report errors for severity level 10 (informational messages).

Se o script sqlcmd tiver um comentário incorreto, erro de sintaxe, ou se estiver faltando uma variável de script, ERRORLEVEL retorna 1.If the sqlcmd script contains an incorrect comment, syntax error, or is missing a scripting variable, ERRORLEVEL returned is 1.

-m error_level-m error_level
Controla quais mensagens de erro são enviadas para stdout.Controls which error messages are sent to stdout. Mensagens com um nível de severidade maior ou igual a esse nível são enviadas.Messages that have a severity level greater than or equal to this level are sent. Quando esse valor for definido como -1, todas as mensagens, incluindo mensagens informativas, serão enviadas.When this value is set to -1, all messages including informational messages, are sent. Não são permitidos espaços entre -m e -1.Spaces are not allowed between the -m and -1. Por exemplo, -m-1 é válido, e -m-1 não.For example, -m-1 is valid, and -m-1 is not.

Essa opção também define a variável de script SQLCMDERRORLEVEL do sqlcmd.This option also sets the sqlcmd scripting variable SQLCMDERRORLEVEL. Essa variável tem um padrão de 0.This variable has a default of 0.

-V error_severity_level-V error_severity_level
Controla o nível de severidade usado para definir a variável ERRORLEVEL.Controls the severity level that is used to set the ERRORLEVEL variable. Mensagens de erro com níveis de severidade maiores ou iguais a esse valor definem ERRORLEVEL.Error messages that have severity levels greater than or equal to this value set ERRORLEVEL. Valores menores que 0 são reportados como 0.Values that are less than 0 are reported as 0. Podem ser usados arquivos de lote e CMD para testar o valor da variável ERRORLEVEL.Batch and CMD files can be used to test the value of the ERRORLEVEL variable.

Opções diversasMiscellaneous Options
-a packet_size-a packet_size
Exige um pacote de tamanho diferente.Requests a packet of a different size. Essa opção define a variável de script SQLCMDPACKETSIZE do sqlcmd.This option sets the sqlcmd scripting variable SQLCMDPACKETSIZE. packet_size deve ser um valor entre 512 e 32767.packet_size must be a value between 512 and 32767. O padrão é igual a 4096.The default = 4096. Um tamanho de pacote maior pode melhorar o desempenho da execução de scripts que tenham muitas instruções SQL entre comandos GO.A larger packet size can enhance performance for execution of scripts that have lots of SQL statements between GO commands. Pode-se solicitar um tamanho de pacote maior.You can request a larger packet size. Porém, se a solicitação for negada, o sqlcmd usará o padrão de servidor para tamanho de pacote.However, if the request is denied, sqlcmd uses the server default for packet size.

-c batch_terminator-c batch_terminator
Especifica o terminador de lote.Specifies the batch terminator. Por padrão, comandos são finalizados e enviados para o SQL ServerSQL Server digitando-se apenas a palavra "GO" em uma linha.By default, commands are terminated and sent to SQL ServerSQL Server by typing the word "GO" on a line by itself. Ao redefinir o terminador de lote, não use palavras-chave reservadas do Transact-SQLTransact-SQL ou caracteres que tenham um significado especial para o sistema operacional, mesmo que sejam precedidas por uma barra invertida.When you reset the batch terminator, do not use Transact-SQLTransact-SQL reserved keywords or characters that have special meaning to the operating system, even if they are preceded by a backslash.

-L[c]-L[c]
Lista os computadores servidor localmente configurados e os nomes dos computadores servidor que estão transmitindo na rede.Lists the locally configured server computers, and the names of the server computers that are broadcasting on the network. Esse parâmetro não pode ser usado em combinação com outros parâmetros.This parameter cannot be used in combination with other parameters. O número máximo de computadores servidores que pode ser listado é 3000.The maximum number of server computers that can be listed is 3000. Se a lista de servidores ficar truncada devido ao tamanho do buffer, será exibida uma mensagem de aviso.If the server list is truncated because of the size of the buffer a warning message is displayed.

Observação

Devido à natureza da transmissão em redes, sqlcmd pode não receber uma resposta oportuna de todos os servidores.Because of the nature of broadcasting on networks, sqlcmd may not receive a timely response from all servers. Assim, a lista de servidores retornada pode variar para cada invocação dessa opção.Therefore, the list of servers returned may vary for each invocation of this option.

Se for especificado o parâmetro opcional c , a saída aparecerá sem os servidores: linha de cabeçalho e cada linha de servidor será listada sem espaços à esquerda.If the optional parameter c is specified, the output appears without the Servers: header line and each server line is listed without leading spaces. Isso é chamado de saída normal.This is referred to as clean output. A saída normal melhora o desempenho de processamento das linguagens dos scripts.Clean output improves the processing performance of scripting languages.

-p[1]-p[1]
Imprime estatísticas de desempenho para cada conjunto de resultados.Prints performance statistics for every result set. O exemplo a seguir mostra o formato para estatísticas de desempenho:The following is an example of the format for performance statistics:

Network packet size (bytes): n

x xact[s]:

Clock Time (ms.): total t1 avg t2 (t3 xacts per sec.)

Onde:Where:

x = Número de transações processadas pelo SQL ServerSQL Server.x = Number of transactions that are processed by SQL ServerSQL Server.

t1 = Tempo total para todas as transações.t1 = Total time for all transactions.

t2 = Tempo médio de uma única transação.t2 = Average time for a single transaction.

t3 = Número médio de transações por segundo.t3 = Average number of transactions per second.

Todos os tempos estão em milissegundos.All times are in milliseconds.

Se o parâmetro opcional 1 for especificado, o formato de saída das estatísticas estará em formato separado por dois pontos, que poderá ser facilmente importado para uma planilha ou processado por um script.If the optional parameter 1 is specified, the output format of the statistics is in colon-separated format that can be imported easily into a spreadsheet or processed by a script.

Se o parâmetro opcional for qualquer valor diferente de 1, um erro será gerado e sqlcmd é encerrado.If the optional parameter is any value other than 1, an error is generated and sqlcmd exits.

-X[1]-X[1]
Desabilita comandos que podem comprometer a segurança do sistema quando o sqlcmd é executado a partir de um arquivo em lote.Disables commands that might compromise system security when sqlcmd is executed from a batch file. Os comandos desabilitados ainda são reconhecidos; o sqlcmd emite uma mensagem de aviso e continua.The disabled commands are still recognized; sqlcmd issues a warning message and continues. Se o parâmetro opcional 1 for especificado, sqlcmd gera uma mensagem de erro e, em seguida, sai.If the optional parameter 1 is specified, sqlcmd generates an error message and then exits. Os comandos a seguir são desabilitados quando for usada a opção -X:The following commands are disabled when the -X option is used:

  • EDED

  • !!!! commandcommand

Se for especificada a opção -X, isso evita que variáveis de ambiente sejam transmitidas para o sqlcmd.If the -X option is specified, it prevents environment variables from being passed on to sqlcmd. Evita também que o script de inicialização especificado, usando a variável de script SQLCMDINI, seja executado.It also prevents the startup script specified by using the SQLCMDINI scripting variable from being executed. Para obter mais informações sobre sqlcmd variáveis de script, consulte usar sqlcmd com variáveis de script.For more information about sqlcmd scripting variables, see Use sqlcmd with Scripting Variables.

-?-?
Exibe o resumo de sintaxe de opções do sqlcmd.Displays the syntax summary of sqlcmd options.

ComentáriosRemarks

As opções não precisam ser usadas na ordem mostrada na seção de sintaxe.Options do not have to be used in the order shown in the syntax section.

Quando são retornados vários resultados, o sqlcmd imprime uma linha em branco entre cada conjunto de resultados em um lote.When multiple results are returned, sqlcmd prints a blank line between each result set in a batch. Além disso, o "<x > linhas afetadas" mensagem não aparece quando não se aplica à instrução executada.In addition, the "<x> rows affected" message does not appear when it does not apply to the statement executed.

Para usar sqlcmd interativamente, digite sqlcmd no prompt de comando com uma ou mais das opções descritas anteriormente neste tópico.To use sqlcmd interactively, type sqlcmd at the command prompt with any one or more of the options described earlier in this topic. Para obter mais informações, consulte Usar o Utilitário sqlcmdFor more information, see Use the sqlcmd Utility

Observação

As opções -L, -Q, -Z ou -i causar sqlcmd seja encerrado após execução.The options -L, -Q, -Z or -i cause sqlcmd to exit after execution.

O comprimento total da linha de comando sqlcmd no ambiente de comando (Cmd.exe), incluindo todos os argumentos e variáveis expandidas, é aquele determinado pelo sistema operacional para Cmd.exe.The total length of the sqlcmd command line in the command environment (Cmd.exe), including all arguments and expanded variables, is that which is determined by the operating system for Cmd.exe.

Precedência de variável (baixa para alta)Variable Precedence (Low to High)

  1. Variáveis ambientais do nível de sistema.System-level environmental variables.

  2. Variáveis ambientais do nível de usuário.User-level environmental variables

  3. Shell de comando (definir X = Y) definido no prompt de comando antes de executar sqlcmd.Command shell (SET X=Y) set at command prompt before running sqlcmd.

  4. sqlcmd-v X=Ysqlcmd-v X=Y

  5. :Setvar X Y:Setvar X Y

Observação

Para exibir as variáveis ambientais, no Painel de Controle, abra Sistemae clique na guia Avançado .To view the environmental variables, in Control Panel, open System, and then click the Advanced tab.

Variáveis de script do sqlcmdsqlcmd Scripting Variables

VariávelVariable Opção relacionadaRelated switch R/WR/W PadrãoDefault
SQLCMDUSERSQLCMDUSER -U-U RR """"
SQLCMDPASSWORDSQLCMDPASSWORD -P-P -- """"
SQLCMDSERVERSQLCMDSERVER -S-S RR "DefaultLocalInstance""DefaultLocalInstance"
SQLCMDWORKSTATIONSQLCMDWORKSTATION -H-H RR "ComputerName""ComputerName"
SQLCMDDBNAMESQLCMDDBNAME -d-d RR """"
SQLCMDLOGINTIMEOUTSQLCMDLOGINTIMEOUT -l-l R/WR/W "8" (segundos)"8" (seconds)
SQLCMDSTATTIMEOUTSQLCMDSTATTIMEOUT -T-t R/WR/W "0" = espere indefinidamente"0" = wait indefinitely
SQLCMDHEADERSSQLCMDHEADERS -H-h R/WR/W "0""0"
SQLCMDCOLSEPSQLCMDCOLSEP -S-s R/WR/W " "" "
SQLCMDCOLWIDTHSQLCMDCOLWIDTH -w-w R/WR/W "0""0"
SQLCMDPACKETSIZESQLCMDPACKETSIZE -A-a RR "4096""4096"
SQLCMDERRORLEVELSQLCMDERRORLEVEL -M-m R/WR/W 00
SQLCMDMAXVARTYPEWIDTHSQLCMDMAXVARTYPEWIDTH -y-y R/WR/W "256""256"
SQLCMDMAXFIXEDTYPEWIDTHSQLCMDMAXFIXEDTYPEWIDTH -y-Y R/WR/W "0" = ilimitado"0" = unlimited
SQLCMDEDITORSQLCMDEDITOR R/WR/W "edit.com""edit.com"
SQLCMDINISQLCMDINI RR """"

SQLCMDUSER, SQLCMDPASSWORD e SQLCMDSERVER são definidos quando :ConnectSQLCMDUSER, SQLCMDPASSWORD and SQLCMDSERVER are set when :Connect

é usado.is used.

R indica que o valor pode ser definido apenas uma vez durante a inicialização do programa.R indicates the value can only be set one time during program initialization.

R/W indica que o valor pode ser modificado com o comando setvar e que os próximos comandos serão influenciados pelo novo valor.R/W indicates that the value can be modified by using the setvar command and subsequent commands will be influenced by the new value.

Comandos sqlcmdsqlcmd Commands

Além das instruções do Transact-SQLTransact-SQL no sqlcmd, também estão disponíveis os comandos a seguir:In addition to Transact-SQLTransact-SQL statements within sqlcmd, the following commands are also available:

GO [count]GO [count] :List:List
[ : ] RESET[:] RESET :Error:Error
[ : ] ED[:] ED :Out:Out
[ : ] !![:] !! :Perftrace:Perftrace
[ : ] QUIT[:] QUIT :Connect:Connect
[ : ] EXIT[:] EXIT :On Error:On Error
:r:r :Help:Help
:ServerList:ServerList :XML [ON | OFF]:XML [ON | OFF]
:Setvar:Setvar :Listvar:Listvar

Lembre-se do seguinte ao usar comandos do sqlcmd:Be aware of the following when you use sqlcmd commands:

  • Todos os comandos do sqlcmd, exceto GO, devem ser antecedidos de dois pontos (:).All sqlcmd commands, except GO, must be prefixed by a colon (:).

    Importante

    Para manter a compatibilidade com versões anteriores de scripts osql existentes, alguns dos comandos serão reconhecidos sem os dois-pontos.To maintain backward compatibility with existing osql scripts, some of the commands will be recognized without the colon. Isso é indicado pelo [ : ].This is indicated by the [:].

  • Os comandos do sqlcmd serão reconhecidos apenas se aparecerem no início de uma linha.sqlcmd commands are recognized only if they appear at the start of a line.

  • Todos os comandos do sqlcmd não diferenciam maiúsculas de minúsculas.All sqlcmd commands are case insensitive.

  • Cada comando deve estar em uma linha separada.Each command must be on a separate line. Um comando não pode ser seguido por uma instrução do Transact-SQLTransact-SQL ou por outro comando.A command cannot be followed by a Transact-SQLTransact-SQL statement or another command.

  • Comandos são executados imediatamente.Commands are executed immediately. Eles não são colocados no buffer de execução como as instruções Transact-SQLTransact-SQL .They are not put in the execution buffer as Transact-SQLTransact-SQL statements are.

Comandos de EdiçãoEditing Commands
[ : ] ED[:] ED
Inicie o editor de textos.Starts the text editor. Esse editor pode ser usado para editar o lote atual do Transact-SQLTransact-SQL ou o último lote executado.This editor can be used to edit the current Transact-SQLTransact-SQL batch, or the last executed batch. Para editar o último lote executado, o comando ED deve ser digitado imediatamente depois da execução do último lote.To edit the last executed batch, the ED command must be typed immediately after the last batch has completed execution.

O editor de textos é definido pela variável de ambiente SQLCMDEDITOR.The text editor is defined by the SQLCMDEDITOR environment variable. O editor padrão é 'Editar.'The default editor is 'Edit'. Para alterar o editor, defina a variável de ambiente SQLCMDEDITOR.To change the editor, set the SQLCMDEDITOR environment variable. Por exemplo, para definir o editor como MicrosoftMicrosoft Notepad, no prompt de comando, digite:For example, to set the editor to MicrosoftMicrosoft Notepad, at the command prompt, type:

SET SQLCMDEDITOR=notepad

[ : ] RESET[:] RESET
Desmarca o cache de instruções.Clears the statement cache.

:List:List
Imprime o conteúdo do cache de instrução.Prints the content of the statement cache.

VariáveisVariables
:Setvar <var> [ " value " ]:Setvar <var> [ "value" ]
Define as variáveis de script do sqlcmd.Defines sqlcmd scripting variables. Variáveis de script têm o seguinte formato: $(VARNAME).Scripting variables have the following format: $(VARNAME).

Nomes de variáveis não diferenciam maiúsculas de minúsculas.Variable names are case insensitive.

Variáveis de script podem ser definidas da seguinte forma:Scripting variables can be set in the following ways:

  • Usando-se implicitamente uma opção de linha de comando.Implicitly using a command-line option. Por exemplo, o -l opção define a SQLCMDLOGINTIMEOUT sqlcmd variável.For example, the -l option sets the SQLCMDLOGINTIMEOUT sqlcmd variable.

  • Explicitamente, usando o comando :Setvar .Explicitly by using the :Setvar command.

  • Definindo uma variável de ambiente antes de executar o sqlcmd.By defining an environment variable before you run sqlcmd.

Observação

A opção -X evita que variáveis de ambiente sejam passadas para o sqlcmd.The -X option prevents environment variables from being passed on to 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.If a variable defined by using :Setvar and an environment variable have the same name, the variable defined by using :Setvar takes precedence.

Nomes de variáveis não devem conter caracteres de espaço em branco.Variable names must not contain blank space characters.

Nomes de variáveis não podem ter a mesma forma que uma expressão variável, como $ (var).Variable names cannot have the same form as a variable expression, such as $(var).

Se o valor da cadeia de caracteres da variável de script tiver espaços em branco, use aspas.If the string value of the scripting variable contains blank spaces, enclose the value in quotation marks. Se não for especificado um valor para uma variável de script, a variável de script será descartada.If a value for a scripting variable is not specified, the scripting variable is dropped.

:Listvar:Listvar
Exibe uma lista das variáveis de script definidas atualmente.Displays a list of the scripting variables that are currently set.

Observação

Somente variáveis que são definidas por de script sqlcmde aquelas definidas usando o : Setvar comando será exibido.Only scripting variables that are set by sqlcmd, and those that are set using the :Setvar command will be displayed.

Comandos de SaídaOutput Commands
:Error :Error
** < ** filename ** >| STDERR|STDOUT**< filename >| STDERR|STDOUT
Redireciona toda a saída de erro para o arquivo especificado por nome do arquivopara stderr ou stdout.Redirect all error output to the file specified by file name, to stderr or to stdout. O comando Error pode aparecer várias vezes em um script.The Error command can appear multiple times in a script. Por padrão, saída de erro é enviada para stderr.By default, error output is sent to stderr.

nome do arquivofile name
Cria e abre um arquivo que receberá a saída.Creates and opens a file that will receive the output. Se o arquivo já existir, será truncado para zero bytes.If the file already exists, it will be truncated to zero bytes. Se o arquivo não estiver disponível devido a permissões ou outras razões, a saída não será alternada e será enviada ao último destino especificado ou ao destino padrão.If the file is not available because of permissions or other reasons, the output will not be switched and will be sent to the last specified or default destination.

STDERRSTDERR
Muda a saída de erro para o fluxo stderr .Switches error output to the stderr stream. Se houver redirecionamento, o destino para o qual o fluxo foi redirecionado receberá a saída de erro.If this has been redirected, the target to which the stream has been redirected will receive the error output.

STDOUTSTDOUT
Muda a saída de erro para o fluxo stdout .Switches error output to the stdout stream. Se houver redirecionamento, o destino para o qual o fluxo foi redirecionado receberá a saída de erro.If this has been redirected, the target to which the stream has been redirected will receive the error output.

:Out < filename > | STDERR| STDOUT:Out < filename >| STDERR| STDOUT
Cria e redireciona todos os resultados da consulta para o arquivo especificado por nome do arquivopara stderr ou stdout.Creates and redirects all query results to the file specified by file name, to stderr or to stdout. Por padrão, a saída é enviada para stdout.By default, output is sent to stdout. Se o arquivo já existir, será truncado para zero bytes.If the file already exists, it will be truncated to zero bytes. O comando Out pode aparecer várias vezes em um script.The Out command can appear multiple times in a script.

:Perftrace < filename > | STDERR| STDOUT:Perftrace < 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.Creates and redirects all performance trace information to the file specified by file name, to stderr or to stdout. Por padrão a saída de rastreamento de desempenho é enviada para stdout.By default performance trace output is sent to stdout. Se o arquivo já existir, será truncado para zero bytes.If the file already exists, it will be truncated to zero bytes. O comando Perftrace pode aparecer várias vezes em um script.The Perftrace command can appear multiple times in a script.

Comandos de controle de execuçãoExecution Control Commands
:On Error[ exit | ignore]:On Error[ exit | ignore]
Define a ação a ser executada no caso de um erro durante a execução de script ou em lote.Sets the action to be performed when an error occurs during script or batch execution.

Quando a opção exit é usada, o sqlcmd é fechado com o valor de erro adequado.When the exit option is used, sqlcmd exits with the appropriate error value.

Quando é usada a opção ignore, o sqlcmd ignora o erro e continua executando o lote ou script.When the ignore option is used, sqlcmd ignores the error and continues executing the batch or script. Por padrão, será impressa uma mensagem de erro.By default, an error message will be printed.

[ : ] QUIT[:] QUIT
Faz com que o sqlcmd seja encerrado.Causes sqlcmd to exit.

[ : ] EXIT[ ( statement ) ][:] EXIT[ (statement) ]
Permite usar o resultado de uma instrução SELECT como o valor de retorno do sqlcmd.Lets you use the result of a SELECT statement as the return value from sqlcmd. Se numérico, a primeira coluna da última linha do resultado será convertida em um inteiro de 4 bytes (longo).If numeric, the first column of the last result row is converted to a 4-byte integer (long). O MS-DOS transmite o byte baixo para o processo pai ou nível de erro do sistema operacional.MS-DOS passes the low byte to the parent process or operating system error level. O Windows 200x passa todo o número inteiro de 4 bytes.Windows 200x passes the whole 4-byte integer. A sintaxe é:The syntax is:

:EXIT(query)

Por exemplo:For example:

:EXIT(SELECT @@ROWCOUNT)

É possível incluir também o parâmetro EXIT como parte de um arquivo em lote.You can also include the EXIT parameter as part of a batch file. Por exemplo, no prompt de comando, digite:For example, at the command prompt, type:

sqlcmd -Q "EXIT(SELECT COUNT(*) FROM '%1')"

O sqlcmd utilitário envia tudo entre os parênteses () para o servidor.The sqlcmd utility sends everything between the parentheses () to the server. Se um procedimento armazenado de sistema selecionar um conjunto e retornar um valor, somente a seleção será retornada.If a system stored procedure selects a set and returns a value, only the selection is returned. A instrução EXIT () sem nada entre os parênteses executa tudo antes dela no lote e é fechada sem um valor de retorno.The EXIT () statement with nothing between the parentheses executes everything before it in the batch and then exits without a return value.

Quando é especificada uma consulta incorreta, o sqlcmd é encerrado sem um valor de retorno.When an incorrect query is specified, sqlcmd will exit without a return value.

Eis uma lista de formatos EXIT:Here is a list of EXIT formats:

  • :EXIT:EXIT

Não executa o lote e então sai imediatamente e não retorna valor algum.Does not execute the batch, and then quits immediately and returns no value.

  • :EXIT( ):EXIT( )

Executa o lote e então sai imediatamente e não retorna valor algum.Executes the batch, and then quits and returns no value.

  • :EXIT(query):EXIT(query)

Executa o lote que inclui a consulta, e então sai depois de retornar os resultados da consulta.Executes the batch that includes the query, and then quits after it returns the results of the query.

Se for usado RAISERROR em um sqlcmd é gerado o script e um estado 127, sqlcmd sairá e retornará a ID da mensagem para o cliente.If RAISERROR is used within a sqlcmd script and a state of 127 is raised, sqlcmd will quit and return the message ID back to the client. Por exemplo: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.This error will cause the sqlcmd script to end and return the message ID 50001 to the client.

Os valores de retorno -1 a -99 são reservados pelo SQL ServerSQL Server; sqlcmd define os seguintes valores de retorno adicionais:The return values -1 to -99 are reserved by SQL ServerSQL Server; sqlcmd defines the following additional return values:

Valores de retornoReturn Values DescriçãoDescription
-100-100 Erro encontrado antes da seleção do valor de retorno.Error encountered prior to selecting return value.
-101-101 Nenhuma linha encontrada ao se selecionar o valor de retorno.No rows found when selecting return value.
-102-102 Erro de conversão ao selecionar valor de retorno.Conversion error occurred when selecting return value.

GO [count]GO [count]
GO sinaliza tanto o término de um lote quanto a execução de qualquer instrução de cachê do Transact-SQLTransact-SQL.GO signals both the end of a batch and the execution of any cached Transact-SQLTransact-SQL statements. Ao especificar um valor para count, serão executadas as instruções de cache count vezes, como um único lote.When specifying a value for count, the cached statements will be executed count times, as a single batch.

Comandos diversosMiscellaneous Commands
:r < filename >:r < filename >
Analisa adicionais Transact-SQLTransact-SQL instruções e sqlcmd comandos do arquivo especificado por < filename > no cache de instrução.Parses additional Transact-SQLTransact-SQL statements and sqlcmd commands from the file specified by <filename> into the statement cache.

Se o arquivo contiver instruções Transact-SQLTransact-SQL que não são seguidas por GO, digite GO na linha que segue :r.If the file contains Transact-SQLTransact-SQL statements that are not followed by GO, you must enter GO on the line that follows :r.

Observação

< nome do arquivo > é lido em relação ao diretório de inicialização no qual sqlcmd foi executado.< filename > is read relative to the startup directory in which sqlcmd was run.

O arquivo será lido e executado depois que for encontrado um terminador de lote.The file will be read and executed after a batch terminator is encountered. Podem ser emitidos vários comandos :r .You can issue multiple :r commands. O arquivo pode incluir qualquer comando sqlcmd.The file may include any sqlcmd command. Isso inclui o terminador de lote GO.This includes the batch terminator GO.

Observação

A contagem de linha que é exibida em modo interativo será aumentada em um para cada comando :r encontrado.The line count that is displayed in interactive mode will be increased by one for every :r command encountered. O comando :r aparecerá na saída do comando de lista.The :r command will appear in the output of the list command.

:Serverlist:Serverlist
Lista os servidores configurados localmente e os nomes dos servidores que estão transmitindo na rede.Lists the locally configured servers and the names of the servers broadcasting on the network.

:Connect server_name[ \ instance_name] [-l timeout] [-U user_name [-P password]]:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]]
Conecta-se a uma instância do SQL ServerSQL Server.Connects to an instance of SQL ServerSQL Server. Além disso fecha a conexão atual.Also closes the current connection.

Opções de tempo limite:Time-out options:

00 esperarwait forever
n>0n>0 esperar por n segundoswait for n seconds

A variável de script SQLCMDSERVER refletirá a conexão ativa atual.The SQLCMDSERVER scripting variable will reflect the current active connection.

Se não for especificado timeout , o valor da variável SQLCMDLOGINTIMEOUT será o padrão.If timeout is not specified, the value of the SQLCMDLOGINTIMEOUT variable is the default.

Se apenas user_name for especificado (como uma opção ou variável de ambiente), será solicitado que o usuário insira uma senha.If only user_name is specified (either as an option, or as an environment variable), the user will be prompted to enter a password. Isso não ocorre se as variáveis de ambiente SQLCMDUSER ou SQLCMDPASSWORD tiverem sido definidas.This is not true if the SQLCMDUSER or SQLCMDPASSWORD environment variables have been set. Se as opções e as variáveis de ambiente não forem fornecidas, o modo de Autenticação do Windows será usado para fazer logon.If neither options nor environment variables are provided, Windows Authentication mode is used to login. Por exemplo, para conectar-se a uma instância, instance1, do SQL ServerSQL Server, myserver, usando segurança integrada você usaria o seguinte:For example to connect to an instance, instance1, of SQL ServerSQL Server, myserver, by using integrated security you would use the following:

:connect myserver\instance1

Para conectar-se à instância padrão do myserver usando variáveis de script, você usaria o seguinte:To connect to the default instance of myserver using scripting variables, you would use the following:

:setvar myusername test

:setvar myservername myserver

:connect $(myservername) $(myusername)

[ : ] !! < command>[:] !!< command>
Executa comandos de sistema operacional.Executes operating system commands. Para executar um comando do sistema operacional, inicie uma linha com dois pontos de exclamação ( !! ) seguida do comando do sistema operacional.To execute an operating system command, start a line with two exclamation marks (!!) followed by the operating system command. Por exemplo:For example:

:!! Dir

Observação

O comando é executado no computador no qual o sqlcmd está sendo executado.The command is executed on the computer on which sqlcmd is running.

:XML [ON | OFF]:XML [ON | OFF]
Para obter mais informações, consulte "XML Output Format", posteriormente neste tópico.For more information, see "XML Output Format," later in this topic

:Help:Help
Lista comandos do sqlcmd juntamente com uma breve descrição de cada comando.Lists sqlcmd commands together with a short description of each command.

Nomes de arquivos sqlcmdsqlcmd File Names

sqlcmd arquivos de entrada podem ser especificados com o -i opção ou o : r comando.sqlcmd input files can be specified with the -i option or the :r command. Arquivos de saída podem ser especificados com a opção -o ou os comandos :Error, :Out e :Perftrace .Output files can be specified with the -o option or the :Error, :Out and :Perftrace commands. A seguir algumas diretrizes sobre como trabalhar com esses arquivos:The following are some guidelines for working with these files:

  • : Error, : Out e : Perftrace devem usar separado < filename > .:Error, :Out and :Perftrace should use separate <filename>. Se o mesmo < filename > é usado, entradas dos comandos poderão ser misturadas.If the same <filename> is used, inputs from the commands may be intermixed.

  • Se for chamado um arquivo de entrada em um servidor remoto do sqlcmd em um computador local e o arquivo tiver um caminho de arquivo de unidade como: c:\OutputFile.txt.If an input file that is located on a remote server is called from sqlcmd on a local computer and the file contains a drive file path such as :out c:\OutputFile.txt. O arquivo de saída será criado no computador local e não no servidor remoto.The output file will be created on the local computer and not on the remote server.

  • Caminhos de arquivo válidos incluem: C:\ < filename > , \ \< servidor>\< Share$ >\ < filename > e "C:\Some pasta\ < file name > ".Valid file paths include: C:\<filename>, \\<Server>\<Share$>\<filename> and "C:\Some Folder\<file name>". Se houver um espaço no caminho, use aspas.If there is a space in the path, use quotation marks.

  • Cada nova sessão do sqlcmd substituirá arquivos existentes que tenham os mesmos nomes.Each new sqlcmd session will overwrite existing files that have the same names.

Mensagens informativasInformational Messages

O sqlcmd imprime qualquer mensagem informativa enviada pelo servidor.sqlcmd prints any informational message that are sent by the server. No exemplo a seguir, depois que as instruções do Transact-SQLTransact-SQL são executadas, é impressa uma mensagem informativa.In the following example, after the Transact-SQLTransact-SQL statements are executed, an informational message is printed.

No prompt de comando, digite o seguinte:At the command prompt, type the following:

sqlcmd

At the sqlcmd prompt type:

USE AdventureWorks2012;

GO

Quando você pressiona ENTER, a seguinte mensagem informativa é impresso: "Contexto de banco de dados alterado para 'AdventureWorks2012'".When you press ENTER, the following informational message is printed: "Changed database context to 'AdventureWorks2012'."

Formato de saída do Transact-SQL QueriesOutput Format from Transact-SQL Queries

O sqlcmd imprime, em primeiro lugar, um cabeçalho de coluna com os nomes de coluna especificados na lista de seleção.sqlcmd first prints a column header that contains the column names specified in the select list. Os nomes de coluna são separados usando-se o caractere SQLCMDCOLSEP.The column names are separated by using the SQLCMDCOLSEP character. Por padrão, esse é um espaço.By default, this is a space. 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.If the column name is shorter than the column width, the output is padded with spaces up to the next column.

Essa linha será seguida por uma linha divisória formada por uma série de tracejados.This line will be followed by a separator line that is a series of dash characters. A saída a seguir mostra um exemplo.The following output shows an example.

Inicie o sqlcmd.Start sqlcmd. No prompt de comando do sqlcmd, digite o seguinte:At the sqlcmd command prompt, type the following:

USE AdventureWorks2012;

SELECT TOP (2) BusinessEntityID, FirstName, LastName

FROM Person.Person;

GO

Quando você pressiona Enter, o seguinte conjunto de resultados é retornado.When you press ENTER, the following result set is returned.

BusinessEntityID FirstName LastName

---------------- ------------ ----------

285 Syed Abbas

293 Catherine Abel

(2 row(s) affected)

Embora a coluna BusinessEntityID tenha apenas 4 caracteres de largura, ela foi expandida para acomodar o nome de coluna mais longo.Although the BusinessEntityID column is only 4 characters wide, it has been expanded to accommodate the longer column name. Por padrão, a saída é finalizada com 80 caracteres.By default, output is terminated at 80 characters. Isso pode ser alterado com a opção -w ou com a definição da variável de script SQLCMDCOLWIDTH.This can be changed by using the -w option, or by setting the SQLCMDCOLWIDTH scripting variable.

Formato de saída XMLXML Output Format

Saída XML é o resultado de uma cláusula FOR XML, não formatada, em um fluxo contínuo.XML output that is the result of a FOR XML clause is output, unformatted, in a continuous stream.

Quando você esperar uma saída XML, use o seguinte comando: :XML ON.When you expect XML output, use the following command: :XML ON.

Observação

O sqlcmd retorna mensagens de erro no formato habitual.sqlcmd returns error messages in the usual format. Observe que as mensagens de erro também são produzidas no fluxo de texto XML em formato XML.Notice that the error messages are also output in the XML text stream in XML format. Usando :XML ON, o sqlcmd não exibe mensagens informativas.By using :XML ON, sqlcmd does not display informational messages.

Para definir XML em modo off, use o seguinte comando: :XML OFF.To set the XML mode off, use the following command: :XML OFF.

O comando GO não deve aparecer antes de o comando XML OFF ser emitido porque o comando XML OFF retorna o sqlcmd para a saída orientada por linhas.The GO command should not appear before the XML OFF command is issued because the XML OFF command switches sqlcmd back to row-oriented output.

Dados XML (em fluxo) e dados de conjunto de linhas não podem ser misturados.XML (streamed) data and rowset data cannot be mixed. Se o comando XML ON não tiver sido emitido antes da execução de uma instrução do Transact-SQLTransact-SQL que gera protocolos XML, a saída será adulterada.If the XML ON command has not been issued before a Transact-SQLTransact-SQL statement that outputs XML streams is executed, the output will be garbled. Se o comando XML ON tiver sido emitido, não será possível executar instruções do Transact-SQLTransact-SQL que gerem conjuntos de linhas normais.If the XML ON command has been issued, you cannot execute Transact-SQLTransact-SQL statements that output regular row sets.

Observação

O comando :XML não oferece suporte para a instrução SET STATISTICS XML.The :XML command does not support the SET STATISTICS XML statement.

Práticas recomendadas sqlcmdsqlcmd Best Practices

Use as seguintes práticas para ajudar a maximizar a segurança e a eficiência.Use the following practices to help maximize security and efficiency.

  • Use segurança integrada.Use integrated security.

  • Use -X em ambientes automatizados.Use -X in automated environments.

  • Proteja arquivos de entrada e de saída usando permissões adequadas de sistema de arquivos NTFS.Secure input and output files by using appropriate NTFS file system permissions.

  • Para aumentar o desempenho, faça o máximo possível em uma sessão sqlcmd, em vez de usar uma série de sessões.To increase performance, do as much in one sqlcmd session as you can, instead of in a series of sessions.

  • Defina valores mais altos de tempo limite para execução em lote ou de consulta do que você imagina que levará para a execução em lote ou de consulta.Set time-out values for batch or query execution higher than you expect it will take to execute the batch or query.

Consulte tambémSee Also

Iniciar o utilitário sqlcmd Start the sqlcmd Utility
Executar arquivos de script Transact-SQL usando sqlcmd Run Transact-SQL Script Files Using sqlcmd
Usar o utilitário sqlcmd Use the sqlcmd Utility
Usar sqlcmd com variáveis de script Use sqlcmd with Scripting Variables
Conectar-se ao mecanismo de banco de dados com sqlcmd Connect to the Database Engine With sqlcmd
Editar scripts SQLCMD com o Editor de Consultas Edit SQLCMD Scripts with Query Editor
Gerenciar etapas de trabalho Manage Job Steps
Criar uma etapa de trabalho CmdExecCreate a CmdExec Job Step