sqlcmd Utilitysqlcmd Utility

SE APLICA A: síSQL Server síAzure SQL Database síAzure SQL Data Warehouse síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Para SQL Server 2014 e inferior, consulte utilidad sqlcmd.For SQL Server 2014 and lower, see sqlcmd Utility.

Para usar sqlcmd en Linux, consulte instalar sqlcmd y bcp en Linux.For using sqlcmd on Linux, see Install sqlcmd and bcp on Linux.

El sqlcmd utilidad le permite escribir instrucciones Transact-SQL, procedimientos del sistema y archivos de script a través de diversos modos disponibles:The sqlcmd utility lets you enter Transact-SQL statements, system procedures, and script files through a variety of available modes:

  • En el símbolo del sistema.At the command prompt.
  • En Editor de consultas en modo SQLCMD.In Query Editor in SQLCMD mode.
  • En un archivo de script de Windows.In a Windows script file.
  • En un paso de trabajo del sistema operativo (Cmd.exe) de un trabajo del Agente SQL Server.In an operating system (Cmd.exe) job step of a SQL Server Agent job.

La utilidad usa ODBC para ejecutar lotes de Transact-SQL.The utility uses ODBC to execute Transact-SQL batches.

Nota

La versión más reciente de la utilidad sqlcmd está disponible como una versión web en el Centro de descarga.The most recent versions of the sqlcmd utility is available as a web release from the Download Center. Necesita la versión 13.1 o posterior para la compatibilidad de Always Encrypted (-g) y la autenticación de Azure Active Directory (-G).You need version 13.1 or higher to support Always Encrypted (-g) and Azure Active Directory authentication (-G). (Puede tener varias versiones de sqlcmd.exe instaladas en el equipo.(You may have several versions of sqlcmd.exe installed on your computer. Asegúrese de que está utilizando la versión correcta.Be sure you are using the correct version. Para determinar el número de versión, ejecute sqlcmd -?.)To determine the version, execute sqlcmd -?.)

Puede probar la utilidad sqlcmd desde Azure Cloud Shell como previamente se instala de forma predeterminada: iniciar Cloud ShellYou can try the sqlcmd utility from Azure Cloud Shell as it is pre-installed by default: Launch Cloud Shell

Para ejecutar instrucciones sqlcmd en SSMS, seleccione Modo SQLCMD en la lista desplegable del menú de consulta de la navegación superior.To run sqlcmd statements in SSMS, select SQLCMD Mode from the top navigation Query Menu dropdown.

Importante

SQL Server Management StudioSQL Server Management Studio (SSMS) usa .NET Framework.NET FrameworkSqlClient de para la ejecución en modo normal y SQLCMD en el Editor de consultas.(SSMS) uses the Microsoft .NET Framework.NET Framework SqlClient for execution in regular and SQLCMD mode in Query Editor. Cuando sqlcmd se ejecuta desde la línea de comandos, sqlcmd usa el controlador ODBC.When sqlcmd is run from the command-line, sqlcmd uses the ODBC driver. Dado que se pueden aplicar diferentes opciones predeterminadas, podría obtener un comportamiento diferente al ejecutar la misma consulta en el modo SQLCMD de SQL Server Management StudioSQL Server Management Studio y en la utilidad 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.

Actualmente, sqlcmd no requiere un espacio entre la opción de línea de comandos y el valor.Currently, sqlcmd does not require a space between the command-line option and the value. Sin embargo, en versiones futuras, se puede requerir un espacio entre la opción de línea de comandos y el valor.However, in a future release, a space may be required between the command-line option and the value.

Otros temas:Other topics:

SintaxisSyntax

sqlcmd   
   -a packet_size  
   -A (dedicated administrator connection)  
   -b (terminate batch job if there is an error)  
   -c batch_terminator  
   -C (trust the server certificate)  
   -d db_name  
   -e (echo input)  
   -E (use trusted connection)  
   -f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage] 
   -g (enable column encryption) 
   -G (use Azure Active Directory for authentication)
   -h rows_per_header  
   -H workstation_name  
   -i input_file  
   -I (enable quoted identifiers)  
   -j (Print raw error messages)
   -k[1 | 2] (remove or replace control characters)  
   -K application_intent  
   -l login_timeout  
   -L[c] (list servers, optional clean output)  
   -m error_level  
   -M multisubnet_failover  
   -N (encrypt connection)  
   -o output_file  
   -p[1] (print statistics, optional colon format)  
   -P password  
   -q "cmdline query"  
   -Q "cmdline query" (and exit)  
   -r[0 | 1] (msgs to stderr)  
   -R (use client regional settings)  
   -s col_separator  
   -S [protocol:]server[instance_name][,port]  
   -t query_timeout  
   -u (unicode output file)  
   -U login_id  
   -v var = "value"  
   -V error_severity_level  
   -w column_width  
   -W (remove trailing spaces)  
   -x (disable variable substitution)  
   -X[1] (disable commands, startup script, environment variables, optional exit)  
   -y variable_length_type_display_width  
   -Y fixed_length_type_display_width  
   -z new_password   
   -Z new_password (and exit)  
   -? (usage)  

Opciones de línea de comandosCommand-line Options

Opciones relacionadas con el inicio de sesiónLogin-Related Options
-A-A
Inicia sesión en SQL Server con una conexión de administrador dedicada (DAC).Signs in to SQL Server with a Dedicated Administrator Connection (DAC). Este tipo de conexión se utiliza para solucionar problemas de un servidor.This kind of connection is used to troubleshoot a server. Esta conexión solo funciona con equipos servidores que admitan DAC.This connection works only with server computers that support DAC. Si DAC no está disponible, sqlcmd genera un mensaje de error y, después, se cierra.If DAC is not available, sqlcmd generates an error message, and then exits. Para obtener más información sobre DAC, vea Conexión de diagnóstico para administradores de bases de datos.For more information about DAC, see Diagnostic Connection for Database Administrators. No se admite la opción - A con la opción -G.The -A option is not supported with the -G option. Al conectarse a SQL Database mediante - A, debe ser administrador de SQL server.When connecting to SQL Database using -A, you must be a SQL server administrator. La DAC no está disponible para que un administrador de Azure Active Directory.The DAC is not available for an Azure Active Directory administrator.

-C-C
Este modificador lo usa el cliente para configurarlo de forma que confíe implícitamente en el certificado de servidor sin validación.This switch is used by the client to configure it to implicitly trust the server certificate without validation. Esta opción es equivalente a la opción de ADO.NET TRUSTSERVERCERTIFICATE = true.This option is equivalent to the ADO.NET option TRUSTSERVERCERTIFICATE = true.

-d db_name-d db_name
Emite una instrucción USE db_name cuando se inicia sqlcmd.Issues a USE db_name statement when you start sqlcmd. Esta opción establece la variable de scripting de sqlcmd SQLCMDDBNAME.This option sets the sqlcmd scripting variable SQLCMDDBNAME. Este parámetro especifica la base de datos inicial.This parameter specifies the initial database. El valor predeterminado es la propiedad de base de datos predeterminada del inicio de sesión.The default is your login's default-database property. Si la base de datos no existe, se genera un mensaje de error y sqlcmd se cierra.If the database does not exist, an error message is generated and sqlcmd exits.

-l login_timeout-l login_timeout
Especifica el número de segundos que tienen que transcurrir antes de que un inicio de sesión de sqlcmd en el controlador ODBC agote el tiempo de espera cuando se trate de conectar a un servidor.Specifies the number of seconds before a sqlcmd login to the ODBC driver times out when you try to connect to a server. Esta opción establece la variable de scripting de sqlcmd SQLCMDLOGINTIMEOUT.This option sets the sqlcmd scripting variable SQLCMDLOGINTIMEOUT. El tiempo de espera predeterminado de inicio de sesión de sqlcmd es de ocho segundos.The default time-out for login to sqlcmd is eight seconds. Cuando se usa la opción -G para conectarse a Base de datos SQL o a Almacenamiento de datos SQL y autenticarse con Azure Active Directory, se recomienda establecer un valor de tiempo de espera de al menos 30 segundos.When using the -G option to connect to SQL Database or SQL Data Warehouse and authenticate using Azure Active Directory, a timeout value of at least 30 seconds is recommended. El período de tiempo de espera de inicio de sesión debe ser un número comprendido entre 0 y 65534.The login time-out must be a number between 0 and 65534. Si el valor proporcionado no es numérico o no está dentro de ese intervalo, sqlcmd generará un mensaje de error.If the value supplied is not numeric or does not fall into that range, sqlcmd generates an error message. El valor 0 especifica que el tiempo de espera es infinito.A value of 0 specifies time-out to be infinite.

-E-E
Usa una conexión de confianza en lugar de usar un nombre de usuario y una contraseña para iniciar sesión en SQL Server.Uses a trusted connection instead of using a user name and password to sign in to SQL Server. Si no se especifica -E , sqlcmd usa de forma predeterminada la opción de conexión de confianza.By default, without -E specified, sqlcmd uses the trusted connection option.

La opción -E omite la posible configuración de la variable de entorno de nombre de usuario y contraseña, como SQLCMDPASSWORD.The -E option ignores possible user name and password environment variable settings such as SQLCMDPASSWORD. Si se usa la opción -E junto con la opción -U o -P , se genera un mensaje de error.If the -E option is used together with the -U option or the -P option, an error message is generated.

-g-g
Establece el valor de cifrado de columnas en Enabled.Sets the Column Encryption Setting to Enabled. Para obtener más información, vea Always Encrypted.For more information, see Always Encrypted. Solo se admiten claves maestras almacenadas en el almacén de certificados de Windows.Only master keys stored in Windows Certificate Store are supported. El modificador -g requiere al menos sqlcmd versión 13.1.The -g switch requires at least sqlcmd version 13.1. Para determinar su versión, ejecute sqlcmd -?.To determine your version, execute sqlcmd -?.

-G-G
El cliente usa este modificador al conectarse a Base de datos SQL o Almacenamiento de datos SQL para especificar que el usuario se autentica mediante la autenticación de Azure Active Directory.This switch is used by the client when connecting to SQL Database or SQL Data Warehouse to specify that the user be authenticated using Azure Active Directory authentication. Esta opción establece la variable de scripting de sqlcmd SQLCMDUSEAAD en true.This option sets the sqlcmd scripting variable SQLCMDUSEAAD = true. El modificador -G requiere al menos sqlcmd versión 13.1.The -G switch requires at least sqlcmd version 13.1. Para determinar su versión, ejecute sqlcmd -?.To determine your version, execute sqlcmd -?. Para más información, consulte Conexión a SQL Database o a SQL Data Warehouse mediante autenticación de Azure Active Directory.For more information, see Connecting to SQL Database or SQL Data Warehouse By Using Azure Active Directory Authentication. No se admite la opción - A con la opción -G.The -A option is not supported with the -G option.

Importante

La opción -G solo es válida para Base de datos SQL de Azure y el almacenamiento de datos de Azure.The -G option only applies to Azure SQL Database and Azure Data Warehouse. Actualmente no se admite la autenticación integrada de AAD en Linux o macOS.AAD Integrated Authentication is not currently supported on Linux or macOS.

  • Nombre de usuario y contraseña de Azure Active Directory:Azure Active Directory Username and Password:

    Si desea utilizar un nombre de usuario y una contraseña de Azure Active Directory, puede proporcionar la opción - G y usar también el nombre de usuario y la contraseña proporcionando las opciones - U y -P .When you want to use an Azure Active Directory user name and password, you can provide the -G option and also use the user name and password by providing the -U and -P options.

    Sqlcmd -S testsrv.database.windows.net -d Target_DB_or_DW -U bob@contoso.com -P MyAADPassword -G 
    

    El parámetro -G, genera la siguiente cadena de conexión en el back-end:The -G parameter generates the following connection string in the backend:

     SERVER = Target_DB_or_DW.testsrv.database.windows.net;UID= bob@contoso.com;PWD=MyAADPassword;AUTHENTICATION = ActiveDirectoryPassword 
    
  • Autenticación integrada de Azure Active DirectoryAzure Active Directory Integrated

    Para autenticación integrada de Azure Active Directory, proporcione la opción -G sin un nombre de usuario o contraseña.For Azure Active Directory Integrated authentication, provide the -G option without a user name or password. Autenticación integrada de AAD no se admite actualmente en Linux o macOS.AAD Integrated Authentication is not currently supported on Linux or macOS.

    Sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net  -G
    

    Esto generará la siguiente cadena de conexión en el back-end:This will generate the following connection string in the backend:

    SERVER = Target_DB_or_DW.testsrv.database.windows.net Authentication = ActiveDirectoryIntegrated; Trusted_Connection=NO
    

    Nota

    La opción -E (conexión de confianza) no se puede utilizar junto con la opción -G).The -E option (Trusted_Connection) cannot be used along with the -G option).

-H nombre_estación_de_trabajo-H workstation_name
Un nombre de estación de trabajo.A workstation name. Esta opción establece la variable de scripting de sqlcmd SQLCMDWORKSTATION.This option sets the sqlcmd scripting variable SQLCMDWORKSTATION. El nombre de la estación de trabajo se muestra en la columna hostname de la vista de catálogo sys.sysprocesses y se puede devolver mediante el procedimiento almacenado sp_who.The workstation name is listed in the hostname column of the sys.sysprocesses catalog view and can be returned using the stored procedure sp_who. Si no se especifica esta opción, el nombre actual del equipo es el valor predeterminado.If this option is not specified, the default is the current computer name. Este nombre se puede usar para identificar diferentes sesiones de sqlcmd .This name can be used to identify different sqlcmd sessions.

-j Imprime mensajes de error sin formato en la pantalla.-j Prints raw error messages to the screen.

-K application_intent-K application_intent
Declara el tipo de carga de trabajo de la aplicación al conectarse a un servidor.Declares the application workload type when connecting to a server. El único valor actualmente admitido es de solo lectura.The only currently supported value is ReadOnly. Si no se especifica -K , la utilidad sqlcmd no admitirá la conectividad con una réplica secundaria en el grupo de disponibilidad AlwaysOn.If -K is not specified, the sqlcmd utility will not support connectivity to a secondary replica in an Always On availability group. Para obtener más información, vea Secundarias activas: réplicas secundarias legibles (grupos de disponibilidad AlwaysOn).For more information, see Active Secondaries: Readable Secondary Replica (Always On Availability Groups)

-M conmutación_por_error_de_múltiples_subredes-M multisubnet_failover
Especifique siempre -M al conectarse a una escucha de un grupo de disponibilidad de SQL Server o a una instancia de clúster de conmutación por error de SQL Server.Always specify -M when connecting to the availability group listener of a SQL Server availability group or a SQL Server Failover Cluster Instance. -M proporciona una detección más rápida del servidor activo actualmente y de la conexión a este.-M provides for faster detection of and connection to the (currently) active server. Si -M no se especifica, el valor de -M será OFF.If –M is not specified, -M is off. Para obtener más información acerca de [! INCLUIRssHADR, creación y configuración de grupos de disponibilidad (SQL Server), agrupación en clústeres de conmutación por error y grupos de disponibilidad AlwaysOn (SQL Server), y secundarias activas: réplicas secundarias legibles (grupos de disponibilidad) Always On.For more information about [!INCLUDEssHADR, Creation and Configuration of Availability Groups (SQL Server), Failover Clustering and Always On Availability Groups (SQL Server), and Active Secondaries: Readable Secondary Replicas(Always On Availability Groups).

-N-N
Este modificador lo usa el cliente para solicitar una conexión cifrada.This switch is used by the client to request an encrypted connection.

-P password-P password
Es una contraseña especificada por el usuario.Is a user-specified password. En las contraseñas se distingue entre mayúsculas y minúsculas.Passwords are case-sensitive. Si se usa la opción -U y no la opción -P y, además, no se ha establecido la variable de entorno SQLCMDPASSWORD, sqlcmd solicita al usuario una contraseña.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. No se recomienda el uso de la contraseña de null, pero puede especificar la contraseña de null con un par de contiguas entre comillas dobles para el valor del parámetro:We do not recommend the use of the null password, but you can specify the null password by using a pair of contiguous double-quotation marks for the parameter value:

  • -P ""-P ""

No. Sin embargo, se recomienda el uso de una contraseña segura.We recommend that you use a strong password.

Utilice una contraseña segura.Use a strong password!

El mensaje de contraseña se muestra en la consola de la siguiente manera: Password:The password prompt is displayed by printing the password prompt to the console, as follows: Password:

La entrada del usuario queda oculta.User input is hidden. Esto significa que no se muestra nada y que el cursor permanece en su posición.This means that nothing is displayed and the cursor stays in position.

La variable de entorno SQLCMDPASSWORD permite establecer una contraseña predeterminada para la sesión actual.The SQLCMDPASSWORD environment variable lets you set a default password for the current session. Por lo tanto, las contraseñas no tienen que estar codificadas de forma rígida en los archivos por lotes.Therefore, passwords do not have to be hard-coded into batch files.

En el siguiente ejemplo primero se establece la variable SQLCMDPASSWORD en el símbolo del sistema y, después, se obtiene acceso a la utilidad sqlcmd .The following example first sets the SQLCMDPASSWORD variable at the command prompt and then accesses the sqlcmd utility. En el símbolo del sistema, escriba:At the command prompt, type:

SET SQLCMDPASSWORD= p@a$$w0rd
En el siguiente símbolo del sistema, escriba:At the following command prompt, type:

sqlcmd

Si la combinación de nombre de usuario y contraseña no es correcta, se genera un mensaje de error.If the user name and password combination is incorrect, an error message is generated.

NOTANOTE! La variable de entorno OSQLPASSWORD se conservó por motivos de compatibilidad.The OSQLPASSWORD environment variable was kept for backward compatibility. La variable de entorno SQLCMDPASSWORD tiene prioridad sobre la variable de entorno OSQLPASSWORD.The SQLCMDPASSWORD environment variable takes precedence over the OSQLPASSWORD environment variable. Ahora que ya no se comparte OSQLPASSWORD, las utilidades sqlcmd y osql puede usarse junto a la otra sin interferencias.Now that OSQLPASSWORD is no longer shared, the utilities sqlcmd and osql can be used next to each other without interference. Los scripts anteriores seguirán funcionando.Old scripts will continue to work.

Si se usa la opción -P junto con la opción -E , se genera un mensaje de error.If the -P option is used with the -E option, an error message is generated.

Si la opción -P va seguida de más de un argumento, se genera un mensaje de error y el programa se cierra.If the -P option is followed by more than one argument, an error message is generated and the program exits.

-S [protocolo:]server[\instancia_nombre] [, puerto]-S [protocol:]server[\instance_name][,port]
Especifica la instancia de SQL Server a la que hay que conectarse.Specifies the instance of SQL Server to which to connect. Establece la variable de scripting de sqlcmd SQLCMDSERVER.It sets the sqlcmd scripting variable SQLCMDSERVER.

Especifique nombre_de_servidor para conectar con la instancia predeterminada de SQL Server en ese equipo servidor.Specify server_name to connect to the default instance of SQL Server on that server computer. Especifique nombre_de_servidor [ \nombre_instancia ] para conectar con una instancia con nombre de SQL Server en ese equipo servidor.Specify server_name [ \instance_name ] to connect to a named instance of SQL Server on that server computer. Si no se especifica ningún equipo servidor, sqlcmd se conecta a la instancia predeterminada de SQL Server en el equipo local.If no server computer is specified, sqlcmd connects to the default instance of SQL Server on the local computer. Esta opción es necesaria si sqlcmd se ejecuta desde un equipo remoto conectado a la red.This option is required when you execute sqlcmd from a remote computer on the network.

protocolo puede ser tcp (TCP/IP), lpc (memoria compartida) o np (canalizaciones con nombre).protocol can be tcp (TCP/IP), lpc (shared memory), or np (named pipes).

Si no especifica nombre_de_servidor [ \nombre_instancia ] al iniciar sqlcmd, SQL Server comprueba si existe la variable de entorno SQLCMDSERVER y la usa.If you do not specify a server_name [ \instance_name ] when you start sqlcmd, SQL Server checks for and uses the SQLCMDSERVER environment variable.

Nota

La variable de entorno OSQLSERVER se ha conservado por motivos de compatibilidad.The OSQLSERVER environment variable has been kept for backward compatibility. La variable de entorno SQLCMDSERVER tiene prioridad sobre la variable de entorno OSQLSERVER; esto significa que sqlcmd y osql se pueden usar una junto a la otra sin interferencias y que los scripts anteriores seguirán funcionando.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
Es el nombre de inicio de sesión o el nombre de usuario de base de datos independiente.Is the login name or contained database user name. Debe proporcionar la opción de nombre de base de datos para los usuarios de la base de datos independiente (-d).For contained database users, you must provide the database name option (-d).

Nota

La variable de entorno OSQLUSER está disponible por motivos de compatibilidad con versiones anteriores.The OSQLUSER environment variable is available for backward compatibility. La variable de entorno SQLCMDUSER tiene prioridad sobre OSQLUSER.The SQLCMDUSER environment variable takes precedence over the OSQLUSER environment variable. Esto significa que sqlcmd y osql se pueden usar una junto a la otra sin interferencias.This means that sqlcmd and osql can be used next to each other without interference. También significa que los scripts de osql existentes seguirán funcionando.It also means that existing osql scripts will continue to work.

Si no se especifica la opción -U ni la opción -P, sqlcmd intenta conectarse mediante el modo de autenticación de Microsoft Windows.If neither the -U option nor the -P option is specified, sqlcmd tries to connect by using Microsoft Windows Authentication mode. La autenticación se basa en la cuenta de Windows del usuario que está ejecutando sqlcmd.Authentication is based on the Windows account of the user who is running sqlcmd.

Si se usa la opción -U junto con la opción -E (descrita más adelante en este artículo), se genera un mensaje de error.If the -U option is used with the -E option (described later in this article), an error message is generated. Si la opción -U va seguida de más de un argumento, se genera un mensaje de error y el programa se cierra.If the –U option is followed by more than one argument, an error message is generated and the program exits.

-z nueva_contraseña-z new_password
Cambiar contraseña:Change password:

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

-Z nueva_contraseña-Z new_password
Cambiar contraseña y salir:Change password and exit:

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

Opciones de entrada o salidaInput/Output Options
-f página_de_códigos | i:página_de_códigos[,o:página_de_códigos] | o:página_de_códigos[,i:página_de_códigos]-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]
Especifica las páginas de códigos de entrada y de salida.Specifies the input and output code pages. El número de página de códigos es un valor numérico que especifica una página de códigos instalada en Windows.The codepage number is a numeric value that specifies an installed Windows code page.

Reglas de conversión de páginas de códigos:Code-page conversion rules:

  • Si no se especifica ninguna página de códigos, sqlcmd usará la página de códigos actual para los archivos de entrada y salida, a menos que el archivo de entrada sea un archivo Unicode, en cuyo caso no es necesaria la conversión.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.

  • sqlcmd reconoce automáticamente los archivos de entrada Unicode "big endian" y "little endian".sqlcmd automatically recognizes both big-endian and little-endian Unicode input files. Si se ha especificado la opción -u , la salida siempre será Unicode "little endian".If the -u option has been specified, the output will always be little-endian Unicode.

  • Si no se especifica ningún archivo de salida, la página de códigos de salida será la página de códigos de la consola.If no output file is specified, the output code page will be the console code page. Este enfoque permite que la salida se muestre correctamente en la consola.This approach enables the output to be displayed correctly on the console.

  • Si hay varios archivos de entrada, se considera que pertenecen a la misma página de códigos.Multiple input files are assumed to be of the same code page. Los archivos de entrada Unicode y no Unicode pueden ser mixtos.Unicode and non-Unicode input files can be mixed.

    Escriba chcp en el símbolo del sistema para comprobar la página de códigos de Cmd.exe.Enter chcp at the command prompt to verify the code page of Cmd.exe.

    -i archivo_entrada[,entrada_file2...]-i input_file[,input_file2...]
    Identifica el archivo que contiene un lote de instrucciones SQL o procedimientos almacenados.Identifies the file that contains a batch of SQL statements or stored procedures. Se pueden especificar varios archivos que se leerán y se procesarán en orden.Multiple files may be specified that will be read and processed in order. No use ningún espacio entre los nombres de archivo.Do not use any spaces between file names. sqlcmd comprobará primero si todos los archivos especificados existen.sqlcmd will first check to see whether all the specified files exist. Si uno o más archivos no existen, sqlcmd se cerrará.If one or more files do not exist, sqlcmd will exit. Las opciones -i y -Q/-q se excluyen mutuamente.The -i and the -Q/-q options are mutually exclusive.

    Ejemplos de rutas de acceso:Path examples:

-i C:\<filename>  
-i \\<Server>\<Share$>\<filename>  
-i "C:\Some Folder\<file name>"  

Las rutas de acceso a archivos que contengan espacios deben escribirse entre comillas.File paths that contain spaces must be enclosed in quotation marks.

Esta opción se puede usar más de una vez: -iarchivo_entrada -II archivo_entrada.This option may be used more than once: -iinput_file -II input_file.

-o output_file-o output_file
Identifica el archivo que recibe la salida de sqlcmd.Identifies the file that receives output from sqlcmd.

Si se especifica -u , archivo_de_salida se almacena en formato Unicode.If -u is specified, the output_file is stored in Unicode format. Si el nombre de archivo no es válido, se genera un mensaje de error y sqlcmd se cierra.If the file name is not valid, an error message is generated, and sqlcmd exits. sqlcmd no admite la escritura simultánea de varios procesos de sqlcmd en el mismo archivo.sqlcmd does not support concurrent writing of multiple sqlcmd processes to the same file. El archivo de salida estará dañado o será incorrecto.The file output will be corrupted or incorrect. Consulte la -f conmutador también es relevante para los formatos de archivo.See the -f switch is also relevant to file formats. Este archivo se creará si no existe.This file will be created if it does not exist. Se sobrescribirá cualquier archivo con el mismo nombre que pertenezca a una sesión de sqlcmd anterior.A file of the same name from a prior sqlcmd session will be overwritten. El archivo que se especifica aquí no es el archivo stdout .The file specified here is not the stdout file. Si se especifica un archivo stdout, este archivo no se usará.If a stdout file is specified, this file will not be used.

Ejemplos de rutas de acceso:Path examples:

-o C:< filename>  
-o \\<Server>\<Share$>\<filename>  
-o "C:\Some Folder\<file name>"  

Las rutas de acceso a archivos que contengan espacios deben escribirse entre comillas.File paths that contain spaces must be enclosed in quotation marks.

-r[0 | 1]-r[0 | 1]
Redirige la salida del mensaje de error a la pantalla (stderr).Redirects the error message output to the screen (stderr). Si no especifica ningún parámetro o si especifica 0, solo se redirigirán los mensajes de error con un nivel de gravedad 11 o superior.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. Si especifica 1, toda salida de mensaje, incluida PRINT, se redirigirá.If you specify 1, all error message output including PRINT is redirected. No surte efecto si se usa -o.Has no effect if you use -o. De forma predeterminada, los mensajes se envían a stdout.By default, messages are sent to stdout.

-R-R
Hace que sqlcmd localice las columnas numéricas, de moneda, fecha y hora recuperadas de SQL Server según la configuración regional del cliente.Causes sqlcmd to localize numeric, currency, date, and time columns retrieved from SQL Server based on the client’s locale. De forma predeterminada, estas columnas se muestran con la configuración regional del servidor.By default, these columns are displayed using the server’s regional settings.

-u-u
Especifica que archivo_de_salida se almacena en formato Unicode, independientemente del formato de archivo_de_entrada.Specifies that output_file is stored in Unicode format, regardless of the format of input_file.

Opciones de ejecución de consultasQuery Execution Options
-e-e
Escribe scripts de entrada en el dispositivo de salida estándar (stdout).Writes input scripts to the standard output device (stdout).

-I-I
Activa (establece en ON) la opción de conexión SET QUOTED_IDENTIFIER.Sets the SET QUOTED_IDENTIFIER connection option to ON. De forma predeterminada, la opción está establecida en OFF.By default, it is set to OFF. Para obtener más información, vea SET QUOTED_IDENTIFIER (Transact-SQL).For more information, see SET QUOTED_IDENTIFIER (Transact-SQL).

-q" consulta cmdline "-q " cmdline query "
Ejecuta una consulta cuando sqlcmd se inicia, pero no cierra sqlcmd cuando la consulta finaliza.Executes a query when sqlcmd starts, but does not exit sqlcmd when the query has finished running. Se pueden ejecutar varias consultas delimitadas por punto y coma.Multiple-semicolon-delimited queries can be executed. Utilice las comillas alrededor de la consulta, como se muestra en el siguiente ejemplo.Use quotation marks around the query, as shown in the following example.

En el símbolo del sistema, escriba: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

No use el terminador GO en la consulta.Do not use the GO terminator in the query.

Si se especifica -b junto con esta opción, sqlcmd se cierra en caso de error.If -b is specified together with this option, sqlcmd exits on error. -b se describe más adelante en este artículo.-b is described later in this article.

-Q" consulta cmdline "-Q " cmdline query "
Ejecuta una consulta cuando se inicia sqlcmd e inmediatamente después cierra sqlcmd.Executes a query when sqlcmd starts and then immediately exits sqlcmd. Se pueden ejecutar varias consultas delimitadas por punto y coma.Multiple-semicolon-delimited queries can be executed.

Utilice las comillas alrededor de la consulta, como se muestra en el siguiente ejemplo.Use quotation marks around the query, as shown in the following example.

En el símbolo del sistema, escriba: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

No use el terminador GO en la consulta.Do not use the GO terminator in the query.

Si se especifica -b junto con esta opción, sqlcmd se cierra en caso de error.If -b is specified together with this option, sqlcmd exits on error. -b se describe más adelante en este artículo.-b is described later in this article.

-t tiempo_de_espera_de_consulta-t query_timeout
Especifica el número de segundos que tienen que transcurrir antes de que un comando (o la instrucción de SQL) exceda el tiempo de espera. Esta opción establece la variable de scripting de sqlcmd SQLCMDSTATTIMEOUT.Specifies the number of seconds before a command (or SQL statement) times out. This option sets the sqlcmd scripting variable SQLCMDSTATTIMEOUT. Si no se especifica ningún valor para tiempo_de_espera , el comando no tiene tiempo de espera. tiempo_de_espera**consulta debe ser un número comprendido entre 1 y 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. Si el valor proporcionado no es numérico o no está dentro de ese intervalo, sqlcmd generará un mensaje de error.If the value supplied is not numeric or does not fall into that range, sqlcmd generates an error message.

Nota

El tiempo de espera real puede variar unos segundos con respecto al valor de tiempo_de_espera especificado.The actual time out value may vary from the specified time_out value by several seconds.

-vvar = valor[ var = valor...]-vvar = value[ var = value...]
Crea una variable de scripting de sqlcmdque puede usarse en un script de sqlcmd .Creates a sqlcmdscripting variable that can be used in a sqlcmd script. Si el valor contiene espacios en blanco, especifíquelo entre comillas.Enclose the value in quotation marks if the value contains spaces. Puede especificar varios valores var="values".You can specify multiple var="values" values. Si hay errores en alguno de los valores especificados, sqlcmd genera un mensaje de error y después se cierra.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
Hace que sqlcmd omita las variables de scripting.Causes sqlcmd to ignore scripting variables. Este parámetro es útil cuando un script contiene muchas instrucciones INSERT que pueden contener cadenas con el mismo formato que las variables normales, por ejemplo, $(nombre_de_variable).This parameter 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).

Opciones de formatoFormatting Options
-h headers-h headers
Especifica el número de filas que se van a imprimir entre los encabezados de las columnas.Specifies the number of rows to print between the column headings. La opción predeterminada es imprimir los encabezados una vez para cada conjunto de resultados de la consulta.The default is to print headings one time for each set of query results. Esta opción establece la variable de scripting de sqlcmd SQLCMDHEADERS.This option sets the sqlcmd scripting variable SQLCMDHEADERS. Use -1 para especificar que no se deben imprimir los encabezados.Use -1 to specify that headers should not be printed. Cualquier valor no válido hará que sqlcmd genere un mensaje de error y se cierre.Any value that is not valid causes sqlcmd to generate an error message and then exit.

-k [1 | 2]-k [1 | 2]
Quita todos los caracteres de control, como tabulaciones y nuevos caracteres de línea de la salida.Removes all control characters, such as tabs and new line characters from the output. Este parámetro conserva el formato de las columnas cuando se devuelven datos.This parameter preserves column formatting when data is returned. Si se especifica 1, los caracteres de control se reemplazan con un solo espacio.If 1 is specified, the control characters are replaced by a single space. Si se especifica 2, los caracteres de control consecutivos se reemplazan por un solo espacio.If 2 is specified, consecutive control characters are replaced by a single space. -k equivale a -k1.-k is the same as -k1.

-s col_separator-s col_separator
Especifica el carácter separador de columnas.Specifies the column-separator character. El valor predeterminado es un espacio en blanco.The default is a blank space. Esta opción establece la variable de scripting de sqlcmd SQLCMDCOLSEP.This option sets the sqlcmd scripting variable SQLCMDCOLSEP. Para usar caracteres que tienen un significado especial para el sistema operativo, como la y comercial (&) o el punto y coma (;), incluya el carácter entre comillas (").To use characters that have special meaning to the operating system such as the ampersand (&), or semicolon (;), enclose the character in quotation marks ("). El separador de columnas puede ser cualquier carácter de 8 bits.The column separator can be any 8-bit character.

-w column_width-w column_width
Especifica el ancho de pantalla para la salida.Specifies the screen width for output. Esta opción establece la variable de scripting de sqlcmd SQLCMDCOLWIDTH.This option sets the sqlcmd scripting variable SQLCMDCOLWIDTH. El ancho de columna debe ser un número mayor que 8 y menor que 65536.The column width must be a number greater than 8 and less than 65536. Si el ancho de columna especificado no está en ese intervalo, sqlcmd generará un mensaje de error.If the specified column width does not fall into that range, sqlcmd generates an error message. El ancho predeterminado es 80 caracteres.The default width is 80 characters. Cuando la línea de salida supera el ancho de columna especificado, se ajusta a la siguiente línea.When an output line exceeds the specified column width, it wraps on to the next line.

-W-W
Esta opción quita los espacios finales de una columna.This option removes trailing spaces from a column. Use esta opción junto con la opción -s cuando prepare datos que se vayan a exportar a otra aplicación.Use this option together with the -s option when preparing data that is to be exported to another application. No se puede usar con las opciones -y ni -Y .Cannot be used with the -y or -Y options.

-y anchura_de_visualización_de_tipo_de_longitud_variable-y variable_length_type_display_width
Establece la variable de scripting de sqlcmd SQLCMDMAXVARTYPEWIDTH.Sets the sqlcmd scripting variable SQLCMDMAXVARTYPEWIDTH. El valor predeterminado es 256.The default is 256. Limita el número de caracteres que se devuelve para tipos de datos de longitud variable y gran tamaño:It limits the number of characters that are returned for the large variable length data types:

  • ntextvarchar(max)

  • nvarchar(max)nvarchar(max)

  • varbinary(max)varbinary(max)

  • xmlxml

  • Tipos de datos UDT (definidos por el usuario)UDT (user-defined data types)

  • texttext

  • ntextntext

  • imagenimage

Nota

Los UDT pueden ser de longitud fija, en función de la implementación.UDTs can be of fixed length depending on the implementation. Si esta longitud de un UDT de longitud fija es más corta que anchura_de_visualización, el valor del UDT devuelto no se ve afectado.If this length of a fixed length UDT is shorter that display_width, the value of the UDT returned is not affected. No obstante, si la longitud es mayor que anchura_de_visualización, la salida queda truncada.However, if the length is longer than display_width, the output is truncated.

Importante

Use la opción -y 0 con mucha precaución, ya que puede causar graves problemas de rendimiento en el servidor y en la red, según el tamaño de los datos devueltos.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 anchura_de_visualización_de_tipo_de_longitud_fija-Y fixed_length_type_display_width
Establece la variable de scripting de sqlcmd SQLCMDMAXFIXEDTYPEWIDTH.Sets the sqlcmd scripting variable SQLCMDMAXFIXEDTYPEWIDTH. El valor predeterminado es 0 (ilimitado).The default is 0 (unlimited). Limita el número de caracteres que se devuelve para los siguientes tipos de datos:Limits the number of characters that are returned for the following data types:

  • char( n ), donde 1<=n<=8000char( n ), where 1<=n<=8000

  • nchar(n n ), donde 1<=n<=4000nchar(n n ), where 1<=n<=4000

  • varchar(n n ), donde 1<=n<=8000varchar(n n ), where 1<=n<=8000

  • nvarchar(n n ), donde 1<=n<=4000nvarchar(n n ), where 1<=n<=4000

  • varbinary(n n ), donde 1<=n<=4000varbinary(n n ), where 1<=n<=4000

  • variantvariant

    Opciones de informes de erroresError Reporting Options
    -b-b
    Especifica que sqlcmd se cierre y devuelva un valor de DOS ERRORLEVEL cuando se produce un error.Specifies that sqlcmd exits and returns a DOS ERRORLEVEL value when an error occurs. El valor que se devuelve a la variable DOS ERRORLEVEL es 1 cuando el mensaje de error de SQL Server tiene un nivel de gravedad superior a 10; de lo contrario, el valor devuelto es 0.The value that is returned to the DOS ERRORLEVEL variable is 1 when the SQL Server error message has a severity level greater than 10; otherwise, the value returned is 0. Si se ha establecido la opción -V además de -b, sqlcmd no notificará un error si el nivel de gravedad es inferior a los valores establecidos mediante -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. Los archivos por lotes del símbolo del sistema pueden probar el valor de ERRORLEVEL y controlar el error apropiadamente.Command prompt batch files can test the value of ERRORLEVEL and handle the error appropriately. sqlcmd no notifica los mensajes de error con un nivel de gravedad de 10 (mensajes informativos).sqlcmd does not report errors for severity level 10 (informational messages).

    Si el script de sqlcmd contiene un comentario incorrecto, un error de sintaxis o carece de una variable de scripting, el valor de ERRORLEVEL devuelto es 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 qué mensajes de error se envían a stdout.Controls which error messages are sent to stdout. Se envían los mensajes que tienen un nivel de gravedad mayor o igual que este nivel.Messages that have a severity level greater than or equal to this level are sent. Cuando este valor se establece en -1, se envían todos los mensajes, incluidos los informativos.When this value is set to -1, all messages including informational messages, are sent. No se permiten espacios entre -m y -1.Spaces are not allowed between the -m and -1. Por ejemplo, -m-1 es válido, pero -m-1 no.For example, -m-1 is valid, and -m -1 is not.

    Esta opción también establece la variable de scripting de sqlcmd SQLCMDERRORLEVEL.This option also sets the sqlcmd scripting variable SQLCMDERRORLEVEL. El valor predeterminado de esta variable es 0.This variable has a default of 0.

    -V nivel_de_gravedad_de_error-V error_severity_level
    Controla el nivel de gravedad que se usa para establecer la variable ERRORLEVEL.Controls the severity level that is used to set the ERRORLEVEL variable. Los mensajes de error que tienen niveles de gravedad mayores o iguales que este valor establecen ERRORLEVEL.Error messages that have severity levels greater than or equal to this value set ERRORLEVEL. Los valores menores que 0 se notifican como 0.Values that are less than 0 are reported as 0. Los archivos CMD y por lotes se pueden usar para probar el valor de la variable ERRORLEVEL.Batch and CMD files can be used to test the value of the ERRORLEVEL variable.

    Otras opcionesMiscellaneous Options
    -a packet_size-a packet_size
    Solicita un paquete de un tamaño diferente.Requests a packet of a different size. Esta opción establece la variable de scripting de sqlcmd SQLCMDPACKETSIZE.This option sets the sqlcmd scripting variable SQLCMDPACKETSIZE. tamaño_paquete debe ser un valor entre 512 y 32767.packet_size must be a value between 512 and 32767. El valor predeterminado es 4096.The default = 4096. Un tamaño de paquete mayor puede mejorar el rendimiento de la ejecución de scripts que comprenden gran cantidad de instrucciones de SQL entre los comandos GO.A larger packet size can enhance performance for execution of scripts that have lots of SQL statements between GO commands. Puede solicitar un tamaño de paquete mayor.You can request a larger packet size. No obstante, si se deniega la solicitud, sqlcmd usa el valor predeterminado de servidor para el tamaño de paquete.However, if the request is denied, sqlcmd uses the server default for packet size.

    -c terminador_de_lote-c batch_terminator
    Especifica el terminador del lote.Specifies the batch terminator. De forma predeterminada, los comandos se terminan y se envían a SQL Server escribiendo la palabra "GO" en una línea aparte.By default, commands are terminated and sent to SQL Server by typing the word "GO" on a line by itself. Cuando restablezca el terminador del lote, no use palabras claves de SQL Server ni caracteres especiales que tengan un significado especial para el sistema operativo, incluso aunque vayan precedidos de una barra diagonal invertida.When you reset the batch terminator, do not use Transact-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]
    Enumera los equipos servidores configurados localmente y los nombres de los equipos servidores que difunden en la red.Lists the locally configured server computers, and the names of the server computers that are broadcasting on the network. Este parámetro no se puede usar en combinación con otros parámetros.This parameter cannot be used in combination with other parameters. El número máximo de equipos de servidor que se puede enumerar es 3000.The maximum number of server computers that can be listed is 3000. Si la lista de servidor se trunca debido al tamaño del búfer, aparece un mensaje de advertencia.If the server list is truncated because of the size of the buffer a warning message is displayed.

Nota

Debido a la naturaleza de las difusiones en las redes, sqlcmd podría no recibir una respuesta de todos los servidores a tiempo.Because of the nature of broadcasting on networks, sqlcmd may not receive a timely response from all servers. Por lo tanto, la lista de servidores devuelta puede variar en cada invocación de esta opción.Therefore, the list of servers returned may vary for each invocation of this option.

Si se especifica el parámetro opcional c, la salida aparece sin la línea de encabezado Servers: y cada línea de servidor se muestra sin espacios iniciales.If the optional parameter c is specified, the output appears without the Servers: header line, and each server line is listed without leading spaces. Esta presentación se denomina salida limpia.This presentation is referred to as clean output. La salida limpia mejora el rendimiento del procesamiento de los lenguajes de scripting.Clean output improves the processing performance of scripting languages.

-p[1]-p[1]
Imprime estadísticas de rendimiento para cada conjunto de resultados.Prints performance statistics for every result set. La siguiente pantalla muestra un ejemplo del formato para las estadísticas de rendimiento:The following display 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.)

Donde:Where:

x = número de transacciones que procesa SQL Server.x = Number of transactions that are processed by SQL Server.

t1 indica el tiempo total de todas las transacciones.t1 = Total time for all transactions.

t2 = tiempo medio de una única transacción.t2 = Average time for a single transaction.

t3 = número medio de transacciones por segundo.t3 = Average number of transactions per second.

Todos los tiempos se indican en milisegundos.All times are in milliseconds.

Si se especifica el parámetro opcional 1 , el formato de salida de las estadísticas es el separado por dos puntos, que se puede importar fácilmente en una hoja de cálculo o se puede procesar en un 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.

Si el parámetro opcional tiene cualquier valor distinto de 1, se genera un error y sqlcmd se cierra.If the optional parameter is any value other than 1, an error is generated and sqlcmd exits.

-X[1]-X[1]
Deshabilita los comandos que pueden poner en peligro la seguridad del sistema cuando se ejecuta sqlcmd desde un archivo por lotes.Disables commands that might compromise system security when sqlcmd is executed from a batch file. Los comandos deshabilitados se siguen reconociendo; sqlcmd emite un mensaje de advertencia y sigue ejecutándose.The disabled commands are still recognized; sqlcmd issues a warning message and continues. Si se especifica el parámetro opcional 1 , sqlcmd genera un mensaje de error y después se cierra.If the optional parameter 1 is specified, sqlcmd generates an error message and then exits. Los siguientes comandos se deshabilitan cuando se usa la opción -X :The following commands are disabled when the -X option is used:

  • EDED

  • !!!! commandcommand

    Si se especifica la opción -X , se evita que se pasen variables de entorno a sqlcmd.If the -X option is specified, it prevents environment variables from being passed on to sqlcmd. También impide que el script de inicio especificada mediante la variable de scripting SQLCMDINI se ejecute.It also prevents the startup script specified by using the SQLCMDINI scripting variable from being executed. Para más información sobre variables de scripting sqlcmd , vea Usar sqlcmd con variables de script.For more information about sqlcmd scripting variables, see Use sqlcmd with Scripting Variables.

    -?-?
    Muestra la versión de sqlcmd y un resumen de la sintaxis de las opciones de sqlcmd .Displays the version of sqlcmd and a syntax summary of sqlcmd options.

NotasRemarks

Las opciones no tienen que utilizarse forzosamente en el orden mostrado en la sección de sintaxis.Options do not have to be used in the order shown in the syntax section.

Cuando se devuelven varios resultados, sqlcmd imprime una línea en blanco entre cada conjunto de resultados de un lote.When multiple results are returned, sqlcmd prints a blank line between each result set in a batch. Además, el mensaje <x> rows affected no aparece cuando no se aplica a la instrucción ejecutada.In addition, the <x> rows affected message does not appear when it does not apply to the statement executed.

Para usar sqlcmd de forma interactiva, escriba sqlcmd en el símbolo del sistema con una o varias de las opciones descritas anteriormente en este artículo.To use sqlcmd interactively, type sqlcmd at the command prompt with any one or more of the options described earlier in this article. Para más información, vea Usar la utilidad sqlcmd.For more information, see Use the sqlcmd Utility

Nota

Las opciones -L, -Q, -Z o -i hacen que sqlcmd se cierre después de la ejecución.The options -L, -Q, -Z or -i cause sqlcmd to exit after execution.

La longitud total de la línea de comandos de sqlcmd en el entorno de comandos (Cmd.exe), incluidos todos los argumentos y las variables expandidas, es la que determina el sistema operativo 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.

Precedencia de variables (menor a mayor)Variable Precedence (Low to High)

  1. Variables de entorno de nivel de sistema.System-level environmental variables.

  2. Variables de entorno de nivel de usuario.User-level environmental variables

  3. El shell de comandos (SET X=Y) se establece en el símbolo del sistema antes de ejecutar 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

Nota

Para ver las variables de entorno, en el Panel de control, abra Sistemay haga clic en la pestaña Opciones avanzadas .To view the environmental variables, in Control Panel, open System, and then click the Advanced tab.

Variables de scripting sqlcmdsqlcmd Scripting Variables

VariableVariable Modificador relacionadoRelated switch L/ER/W Valor predeterminadoDefault
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 L/ER/W "8" (segundos)"8" (seconds)
SQLCMDSTATTIMEOUTSQLCMDSTATTIMEOUT -t-t L/ER/W "0" = esperar indefinidamente"0" = wait indefinitely
SQLCMDHEADERSSQLCMDHEADERS -H-h L/ER/W "0""0"
SQLCMDCOLSEPSQLCMDCOLSEP -S-s L/ER/W "" "
SQLCMDCOLWIDTHSQLCMDCOLWIDTH -w-w L/ER/W "0""0"
SQLCMDPACKETSIZESQLCMDPACKETSIZE -A-a RR "4096""4096"
SQLCMDERRORLEVELSQLCMDERRORLEVEL -M-m L/ER/W 00
SQLCMDMAXVARTYPEWIDTHSQLCMDMAXVARTYPEWIDTH -y-y L/ER/W "256""256"
SQLCMDMAXFIXEDTYPEWIDTHSQLCMDMAXFIXEDTYPEWIDTH -y-Y L/ER/W "0" = ilimitado"0" = unlimited
SQLCMDEDITORSQLCMDEDITOR L/ER/W "edit.com""edit.com"
SQLCMDINISQLCMDINI RR """"
SQLCMDUSEAADSQLCMDUSEAAD -G-G L/ER/W """"

SQLCMDUSER, SQLCMDPASSWORD y SQLCMDSERVER se establecen cuando se usa :Connect.SQLCMDUSER, SQLCMDPASSWORD, and SQLCMDSERVER are set when :Connect is used.

L indica que el valor solo puede establecerse una vez durante la inicialización del programa.R indicates the value can only be set one time during program initialization.

L/E indica que el valor puede modificarse mediante el comando setvar y que los comandos siguientes se verán influidos por el nuevo 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 de sqlcmdsqlcmd Commands

Además de las instrucciones Transact-SQL de sqlcmd, también están disponibles los siguientes comandos:In addition to Transact-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

Tenga en cuenta lo siguiente cuando use comandos de sqlcmd :Be aware of the following when you use sqlcmd commands:

  • Todos los comandos de sqlcmd , excepto GO, deben ir precedidos de dos puntos (:).All sqlcmd commands, except GO, must be prefixed by a colon (:).

    Importante

    Para mantener la compatibilidad con los scripts de osql existentes, algunos de los comandos se reconocerán sin los dos puntos, indicado por [:].To maintain backward compatibility with existing osql scripts, some of the commands will be recognized without the colon, indicated by the [:].

  • Los comandos desqlcmd se reconocen solo si aparecen al principio de una línea.sqlcmd commands are recognized only if they appear at the start of a line.

  • Los comandos de sqlcmd no distinguen entre mayúsculas y minúsculas.All sqlcmd commands are case insensitive.

  • Cada comando debe estar en una línea separada.Each command must be on a separate line. Un comando no puede ir seguido de una instrucción de Transact-SQL o de otro comando.A command cannot be followed by a Transact-SQL statement or another command.

  • Los comandos se ejecutan inmediatamente.Commands are executed immediately. No se colocan en el búfer de ejecución, como es el caso de las instrucciones Transact-SQL.They are not put in the execution buffer as Transact-SQL statements are.

    Editar comandosEditing Commands
    [:] ED[:] ED
    Inicia el editor de texto.Starts the text editor. Este editor se puede utilizar para editar el lote actual de Transact-SQL o el último lote ejecutado.This editor can be used to edit the current Transact-SQL batch, or the last executed batch. Para editar el último lote ejecutado, el comando ED debe escribirse inmediatamente después de que se complete la ejecución del último lote.To edit the last executed batch, the ED command must be typed immediately after the last batch has completed execution.

    El editor de texto se define mediante la variable de entorno SQLCMDEDITOR.The text editor is defined by the SQLCMDEDITOR environment variable. El editor predeterminado es "Edit".The default editor is 'Edit'. Para cambiar el editor, establezca la variable de entorno SQLCMDEDITOR.To change the editor, set the SQLCMDEDITOR environment variable. Por ejemplo, para establecer el editor en el Bloc de notas de Microsoft, en el símbolo del sistema, escriba:For example, to set the editor to Microsoft Notepad, at the command prompt, type:

    SET SQLCMDEDITOR=notepad

    [:] RESET[:] RESET
    Borra la caché de instrucciones.Clears the statement cache.

    :List:List
    Imprime el contenido de la memoria caché de instrucciones.Prints the content of the statement cache.

    VariablesVariables
    : Setvar < var> [ "valor" ]:Setvar <var> [ "value" ]
    Define variables de scripting de sqlcmd .Defines sqlcmd scripting variables. Las variables de scripting tienen el siguiente formato: $(VARNAME).Scripting variables have the following format: $(VARNAME).

    Los nombres de variables no distinguen entre mayúsculas y minúsculas.Variable names are case insensitive.

    Las variables de scripting pueden establecerse de los siguientes modos:Scripting variables can be set in the following ways:

  • Implícitamente mediante una opción de línea de comandos.Implicitly using a command-line option. Por ejemplo, la opción -l establece la variable de sqlcmd SQLCMDLOGINTIMEOUT.For example, the -l option sets the SQLCMDLOGINTIMEOUT sqlcmd variable.

  • Explícitamente mediante el comando :Setvar .Explicitly by using the :Setvar command.

  • Al definir una variable de entorno antes de ejecutar sqlcmd.By defining an environment variable before you run sqlcmd.

Nota

La opción -X impide que las variables de entorno se pasen a sqlcmd.The -X option prevents environment variables from being passed on to sqlcmd.

Si una variable definida mediante :Setvar y una variable de entorno tienen el mismo nombre, la variable definida mediante :Setvar tiene prioridad.If a variable defined by using :Setvar and an environment variable have the same name, the variable defined by using :Setvar takes precedence.

Los nombres de variables no deben contener caracteres de espacio en blanco.Variable names must not contain blank space characters.

Los nombres de variable no pueden tener el mismo formato que una expresión variable como $(var).Variable names cannot have the same form as a variable expression, such as $(var).

Si el valor de la cadena de la variable de script contiene espacios en blanco, incluya el valor entre comillas.If the string value of the scripting variable contains blank spaces, enclose the value in quotation marks. Si un valor para la variable del script no se especifica, la variable de script se elimina.If a value for a scripting variable is not specified, the scripting variable is dropped.

:Listvar:Listvar
Muestra una lista de variables de scripting que están establecidas actualmente.Displays a list of the scripting variables that are currently set.

Nota

Solo se mostrarán las variables de scripting establecidas mediante sqlcmdy las variables establecidas con el comando :Setvar .Only scripting variables that are set by sqlcmd, and those that are set using the :Setvar command will be displayed.

Comandos de salidaOutput Commands
:Error :Error
< nombre_de_archivo >| STDERR|STDOUT< filename >| STDERR|STDOUT
Redirige toda la salida de error al archivo especificado por nombre_de_archivo, a stderr o a stdout.Redirect all error output to the file specified by file name, to stderr or to stdout. El comando Error puede aparecer varias veces en un script.The Error command can appear multiple times in a script. De forma predeterminada, la salida de error se envía a stderr.By default, error output is sent to stderr.

Nombre de archivofile name
Crea y abre un archivo que recibirá la salida.Creates and opens a file that will receive the output. Si el archivo ya existe, se truncará en cero bytes.If the file already exists, it will be truncated to zero bytes. Si el archivo no está disponible a causa de los permisos u otros motivos, la salida no se cambiará y se enviará al último destino especificado o al predeterminado.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
Cambia la salida del error al flujo stderr .Switches error output to the stderr stream. Si se ha redirigido, el destino al cual se redirige el flujo recibirá la salida del error.If this has been redirected, the target to which the stream has been redirected will receive the error output.

STDOUTSTDOUT
Cambia la salida del error al flujo stdout .Switches error output to the stdout stream. Si se ha redirigido, el destino al cual se redirige el flujo recibirá la salida del error.If this has been redirected, the target to which the stream has been redirected will receive the error output.

:Out < nombre_de_archivo >| STDERR| STDOUT:Out < filename >| STDERR| STDOUT
Crea y redirige todos los resultados de consulta al archivo especificado por file name, a stderr o a stdout.Creates and redirects all query results to the file specified by file name, to stderr or to stdout. De forma predeterminada, la salida se envía a stdout.By default, output is sent to stdout. Si el archivo ya existe, se trunca en cero bytes.If the file already exists, it is truncated to zero bytes. El comando Out puede aparecer varias veces en un script.The Out command can appear multiple times in a script.

:Perftrace < nombre_de_archivo >| STDERR| STDOUT:Perftrace < filename >| STDERR| STDOUT
Crea y redirige toda la información de seguimiento de rendimiento al archivo especificado por nombre_de_archivo, a stderr o a stdout.Creates and redirects all performance trace information to the file specified by file name, to stderr or to stdout. De forma predeterminada, la salida de seguimiento de rendimiento se envía a stdout.By default performance trace output is sent to stdout. Si el archivo ya existe, se trunca en cero bytes.If the file already exists, it is truncated to zero bytes. El comando Perftrace puede aparecer varias veces en un script.The Perftrace command can appear multiple times in a script.

Comandos de control de ejecuciónExecution Control Commands
:On Error[ exit | ignore]:On Error[ exit | ignore]
Establece la acción que se llevará a cabo cuando se produzca un error durante la ejecución del script o del lote.Sets the action to be performed when an error occurs during script or batch execution.

Cuando se usa la opción exit , sqlcmd se cierra con el valor de error correspondiente.When the exit option is used, sqlcmd exits with the appropriate error value.

Cuando se usa la opción ignore , sqlcmd pasa por alto el error y continúa con la ejecución del lote o del script.When the ignore option is used, sqlcmd ignores the error and continues executing the batch or script. De forma predeterminada, se imprime un mensaje de error.By default, an error message is printed.

[:] QUIT[:] QUIT
Hace que sqlcmd se cierre.Causes sqlcmd to exit.

[:] EXIT[ (instrucción) ][:] EXIT[ (statement) ]
Permite usar el resultado de una instrucción SELECT como valor devuelto de sqlcmd.Lets you use the result of a SELECT statement as the return value from sqlcmd. Si es numérica, la primera columna de la última fila del resultado se convierte en un entero de 4 bytes (long).If numeric, the first column of the last result row is converted to a 4-byte integer (long). MS-DOS pasa el byte bajo al proceso primario o al nivel de errores del sistema operativo.MS-DOS passes the low byte to the parent process or operating system error level. Windows 200x pasa el entero de 4 bytes completo.Windows 200x passes the whole 4-byte integer. La sintaxis es:The syntax is:

:EXIT(query)

Por ejemplo:For example:

:EXIT(SELECT @@ROWCOUNT)

También puede incluir el parámetro EXIT como parte de un archivo por lotes.You can also include the EXIT parameter as part of a batch file. Por ejemplo, en el símbolo del sistema, escriba:For example, at the command prompt, type:

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

La utilidad sqlcmd envía todo lo que está entre paréntesis () al servidor.The sqlcmd utility sends everything between the parentheses () to the server. Si un procedimiento almacenado del sistema selecciona un conjunto y devuelve un valor, solo se devuelve la selección.If a system stored procedure selects a set and returns a value, only the selection is returned. La instrucción EXIT () sin nada entre los paréntesis ejecuta todo lo que precede a estos en el lote y, después, se cierra sin ningún valor devuelto.The EXIT () statement with nothing between the parentheses executes everything before it in the batch and then exits without a return value.

Cuando se especifica una consulta incorrecta, sqlcmd se cierra sin devolver ningún valor.When an incorrect query is specified, sqlcmd will exit without a return value.

Aquí se muestra una lista de formatos de EXIT:Here is a list of EXIT formats:

  • :EXIT:EXIT

    No ejecuta el lote y, después, sale de forma inmediata y no devuelve ningún valor.Does not execute the batch, and then quits immediately and returns no value.

  • :EXIT( ):EXIT( )

    Ejecuta el lote y, a continuación, sale sin devolver ningún valor.Executes the batch, and then quits and returns no value.

  • :EXIT(query):EXIT(query)

    Ejecuta el lote que incluye la consulta y, a continuación, se cierra tras devolver el resultado de la consulta.Executes the batch that includes the query, and then quits after it returns the results of the query.

    Si se usa RAISERROR en un script de sqlcmd y se genera el estado 127, sqlcmd se cerrará y devolverá un identificador de mensaje al 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 ejemplo:For example:

    RAISERROR(50001, 10, 127)

    Este error hará que el script de sqlcmd finalice y devuelva el identificador de mensaje 50001 al cliente.This error will cause the sqlcmd script to end and return the message ID 50001 to the client.

    Los valores devueltos -1 a -99 están reservados para SQL Server; y sqlcmd define los siguientes valores devueltos adicionales:The return values -1 to -99 are reserved by SQL Server, and sqlcmd defines the following additional return values:

Valores devueltosReturn Values DescripciónDescription
-100-100 Error encontrado antes de seleccionar el valor devuelto.Error encountered prior to selecting return value.
-101-101 No se encontró ninguna fila al seleccionar el valor devuelto.No rows found when selecting return value.
-102-102 Error de conversión al seleccionar el valor devuelto.Conversion error occurred when selecting return value.

GO [count]GO [count]
GO marca tanto el final de un lote como la ejecución de cualquier instrucción de Transact-SQL almacenada en caché.GO signals both the end of a batch and the execution of any cached Transact-SQL statements. El lote se ejecuta varias veces como lotes independientes.The batch is executed multiple times as separate batches. No se puede declarar una variable más de una vez en un único lote.You cannot declare a variable more than once in a single batch.

Otros comandosMiscellaneous Commands
:r < nombre_de_archivo >:r < filename >
Analiza instrucciones Transact-SQL y comandos sqlcmd adicionales desde el archivo especificado por <nombre_de_archivo> en la memoria caché de instrucciones.Parses additional Transact-SQL statements and sqlcmd commands from the file specified by <filename> into the statement cache.

Si el archivo contiene instrucciones Transact-SQL que no van seguidas de GO, debe escribir GO en la línea que sigue a :r.If the file contains Transact-SQL statements that are not followed by GO, you must enter GO on the line that follows :r.

Nota

<nombre_de_archivo> se lee de forma relativa al directorio de inicio en el que se ha ejecutado sqlcmd.< filename > is read relative to the startup directory in which sqlcmd was run.

El archivo se leerá y se ejecutará después de que se encuentre un terminador de lote.The file will be read and executed after a batch terminator is encountered. Puede emitir varios comandos :r .You can issue multiple :r commands. El archivo puede incluir cualquier comando de sqlcmd .The file may include any sqlcmd command. Eso incluye el terminador de lote GO.This includes the batch terminator GO.

Nota

El recuento de líneas que se muestra en el modo interactivo aumentará en uno por cada comando :r que se encuentre.The line count that is displayed in interactive mode will be increased by one for every :r command encountered. El comando :r aparecerá en la salida del comando de lista.The :r command will appear in the output of the list command.

:Serverlist:Serverlist
Enumera los servidores configurados localmente y los nombres de los servidores que difunden en la red.Lists the locally configured servers and the names of the servers broadcasting on the network.

:Connect nombre_servidor[\nombre_instancia] [-l tiempo_espera] [-U nombre_usuario [-P contraseña]]:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]]
Conecta con una instancia de SQL Server.Connects to an instance of SQL Server . También cierra la conexión actual.Also closes the current connection.

Opciones de tiempo de espera:Time-out options:

00 espera indefinidamentewait forever
n>0n>0 espera durante n segundoswait for n seconds

La variable de scripting SQLCMDSERVER reflejará la conexión activa actual.The SQLCMDSERVER scripting variable will reflect the current active connection.

Si no se especifica timeout , el valor de la variable SQLCMDLOGINTIMEOUT es el predeterminado.If timeout is not specified, the value of the SQLCMDLOGINTIMEOUT variable is the default.

Si solo se especifica nombre_del_usuario (como opción o como variable de entorno), se solicitará al usuario que especifique una contraseña.If only user_name is specified (either as an option, or as an environment variable), the user will be prompted to enter a password. No se avisa a los usuarios si se han establecido las variables de entorno SQLCMDUSER o SQLCMDPASSWORD.Users are not prompted if the SQLCMDUSER or SQLCMDPASSWORD environment variables have been set. Si no se proporcionan opciones ni variables de entorno, se iniciará sesión en modo Autenticación de Windows.If neither options nor environment variables are provided, Windows Authentication mode is used to sign in. Por ejemplo, para conectar con una instancia, instance1, de SQL Server, myserver, mediante seguridad integrada, se necesitaría el siguiente comando:For example to connect to an instance, instance1, of SQL Server, myserver, by using integrated security you would use the following command:

:connect myserver\instance1

Para conectar con la instancia predeterminada de myserver con variables de script, utilizaría lo siguiente: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>
Ejecuta comandos del sistema operativo.Executes operating system commands. Para ejecutar un comando del sistema operativo, inicie una línea con dos signos de exclamación (!!) seguidos por el comando del sistema operativo.To execute an operating system command, start a line with two exclamation marks (!!) followed by the operating system command. Por ejemplo:For example:

:!! Dir

Nota

El comando se ejecuta en el equipo en el que se ejecuta sqlcmd .The command is executed on the computer on which sqlcmd is running.

:XML [ON | OFF]:XML [ON | OFF]
Para más información, construye Formato de salida XML y Formato de salida de JSON, más adelante en este artículoFor more information, see XML Output Format and JSON Output Format in this article

:Help:Help
Muestra los comandos de sqlcmd junto con una breve descripción de cada comando.Lists sqlcmd commands together with a short description of each command.

Nombres de archivo de sqlcmdsqlcmd File Names

Los archivos de entrada desqlcmd se pueden especificar con la opción -i o con el comando :r .sqlcmd input files can be specified with the -i option or the :r command. Los archivos de salida se pueden especificar con la opción -o o con los comandos :Error, :Out y :Perftrace .Output files can be specified with the -o option or the :Error, :Out and :Perftrace commands. A continuación se incluyen algunas directrices para trabajar con estos archivos:The following are some guidelines for working with these files:

  • :Error, :Out y :Perftrace deben usar valores de <nombre_de_archivo> independientes.:Error, :Out and :Perftrace should use separate <filename>. Si se usa el mismo <nombre_de_archivo> , es posible que las entradas de los comandos se entremezclen.If the same <filename> is used, inputs from the commands may be intermixed.

  • Si sqlcmd llama a un archivo de entrada ubicado en un servidor remoto desde un equipo local y el archivo contiene una ruta de acceso de archivo del tipo :Out c:\archivoDeSalida.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. El archivo de salida se crea en el equipo local y no en el servidor remoto.The output file is created on the local computer and not on the remote server.

  • Incluyen rutas de acceso de archivo válidas: C:\<filename>, \\<Server>\<Share$>\<filename> y "C:\Some Folder\<file name>".Valid file paths include: C:\<filename>, \\<Server>\<Share$>\<filename> and "C:\Some Folder\<file name>". Si hay algún espacio en blanco en la ruta de acceso, use comillas.If there is a space in the path, use quotation marks.

  • Cada nueva sesión de sqlcmd sobrescribirá los archivos existentes que tengan el mismo nombre.Each new sqlcmd session will overwrite existing files that have the same names.

Mensajes informativosInformational Messages

sqlcmd imprime los mensajes informativos enviados por el servidor.sqlcmd prints any informational message that is sent by the server. En el siguiente ejemplo, tras ejecutar las instrucciones de Transact-SQL, se imprime un mensaje informativo.In the following example, after the Transact-SQL statements are executed, an informational message is printed.

En el símbolo del sistema, escriba el comando:At the command prompt, type the command:

sqlcmd

En el tipo de símbolo del sistema de sqlcmd:At the sqlcmd prompt type:

USE AdventureWorks2012;

GO

Cuando se presiona ENTRAR, se imprime el siguiente mensaje informativo: "Se cambió el contexto de la base de datos a 'AdventureWorks2008R2'".When you press ENTER, the following informational message is printed: "Changed database context to 'AdventureWorks2012'."

Formato de salida de consultas de Transact-SQLOutput Format from Transact-SQL Queries

sqlcmd primero imprime un encabezado de columna que contiene los nombres de columna especificados en la lista de selección.sqlcmd first prints a column header that contains the column names specified in the select list. Los nombres de columna se separan mediante el carácter SQLCMDCOLSEP.The column names are separated by using the SQLCMDCOLSEP character. De forma predeterminada, es un espacio en blanco.By default, this is a space. Si el nombre de la columna es más corto que el ancho de la columna, la salida se rellena con espacios hasta la siguiente columna.If the column name is shorter than the column width, the output is padded with spaces up to the next column.

Esta línea irá seguida de una línea separadora, que es una serie de caracteres de guión.This line will be followed by a separator line that is a series of dash characters. La siguiente salida muestra un ejemplo.The following output shows an example.

Inicie sqlcmd.Start sqlcmd. En el símbolo del sistema de sqlcmd, escriba lo siguiente:At the sqlcmd command prompt, type the query:

USE AdventureWorks2012;

SELECT TOP (2) BusinessEntityID, FirstName, LastName

FROM Person.Person;

GO

Cuando presione ENTRAR, se devolverá el siguiente conjunto de resultados.When you press ENTER, the following result set is retuned.

BusinessEntityID FirstName LastName

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

285 Syed Abbas

293 Catherine Abel

(2 row(s) affected)

Aunque la columna BusinessEntityID tiene solo cuatro caracteres de ancho, se ha expandido para acomodar el nombre de columna más largo.Although the BusinessEntityID column is only four characters wide, it has been expanded to accommodate the longer column name. De forma predeterminada, la salida finaliza a los 80 caracteres.By default, output is terminated at 80 characters. Esto se puede cambiar mediante la opción -w o estableciendo la variable de scripting SQLCMDCOLWIDTH.This can be changed by using the -w option, or by setting the SQLCMDCOLWIDTH scripting variable.

Formato de salida XMLXML Output Format

La salida XML de una cláusula FOR XML se ofrece sin formato en un flujo continuo.XML output that is the result of a FOR XML clause is output, unformatted, in a continuous stream.

Cuando espere una salida XML, use el siguiente comando: :XML ON.When you expect XML output, use the following command: :XML ON.

Nota

sqlcmd devuelve mensajes de error en el formato habitual.sqlcmd returns error messages in the usual format. Tenga en cuenta que los mensajes de error también salen en el flujo de texto XML en formato XML.Notice that the error messages are also output in the XML text stream in XML format. Con :XML ON, sqlcmd no muestra mensajes informativos.By using :XML ON, sqlcmd does not display informational messages.

Para desactivar el modo XML, use el siguiente comando: :XML OFF.To set the XML mode to off, use the following command: :XML OFF.

El comando GO no debe aparecer antes de que se emita el comando XML OFF, ya que el comando XML OFF vuelve a cambiar sqlcmd a la salida orientada a filas.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.

Los datos XML (de flujo) y los datos del conjunto de filas no se pueden mezclar.XML (streamed) data and rowset data can't be mixed. Si el comando XML ON no se ha emitido antes de ejecutar una instrucción Transact-SQL que genera flujos XML, la salida será confusa.If the XML ON command hasn't been issued before a Transact-SQL statement that outputs XML streams is executed, the output is garbled. Cuando se ha emitido el comando XML ON, no se pueden ejecutar instrucciones Transact-SQL que den como resultado conjuntos de filas normales.Once the XML ON command has been issued, you can't execute Transact-SQL statements that output regular row sets.

Nota

El comando :XML no admite la instrucción SET STATISTICS XML.The :XML command does not support the SET STATISTICS XML statement.

Formato de salida de JSONJSON Output Format

Cuando espere una salida de JSON, use el siguiente comando: :XML ON.When you expect JSON output, use the following command: :XML ON. De lo contrario, la salida incluye el nombre de columna y el texto JSON,Otherwise the output includes both the column name and the JSON text. que no es JSON válido.This output is not valid JSON.

Para desactivar el modo XML, use el siguiente comando: :XML OFF.To set the XML mode to off, use the following command: :XML OFF.

Para más información, consulte Formato de salida XML en este artículo.For more info, see XML Output Format in this article.

Uso de la autenticación de Azure Active DirectoryUsing Azure Active Directory Authentication

Ejemplos de uso de la autenticación de Azure Active Directory:Examples using Azure Active Directory Authentication:

sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net  -G  -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -U bob@contoso.com -P MyAADPassword -G -l 30

Prácticas recomendadas para sqlcmdsqlcmd Best Practices

Use las siguientes prácticas para maximizar la seguridad y la eficacia.Use the following practices to help maximize security and efficiency.

  • Use seguridad integrada.Use integrated security.

  • Use -X en entornos automatizados.Use -X in automated environments.

  • Proteja los archivos de entrada y salida mediante los permisos del sistema de archivos NTFS adecuados.Secure input and output files by using appropriate NTFS file system permissions.

  • Para aumentar el rendimiento, haga tanto como pueda en una sola sesión de sqlcmd en vez de emplear varias.To increase performance, do as much in one sqlcmd session as you can, instead of in a series of sessions.

  • Establezca valores de tiempo de espera para la ejecución de lotes y consultas superiores a los que prevea para la ejecución de cada lote o consulta.Set time-out values for batch or query execution higher than you expect it will take to execute the batch or query.

Ver tambiénSee Also

Iniciar la utilidad sqlcmd Start the sqlcmd Utility
Ejecutar archivos de scripts Transact-SQL mediante sqlcmd Run Transact-SQL Script Files Using sqlcmd
Usar la utilidad sqlcmd Use the sqlcmd Utility
Usar sqlcmd con variables de script Use sqlcmd with Scripting Variables
Conectarse al motor de base de datos con sqlcmd Connect to the Database Engine With sqlcmd
Modificar scripts SQLCMD con el Editor de consultas Edit SQLCMD Scripts with Query Editor
Administrar pasos de trabajo Manage Job Steps
Crear un paso de trabajo CmdExecCreate a CmdExec Job Step