sqlcmd: usar la utilidadsqlcmd - Use the utility

En este tema se aplica a: SíSQL ServerSíbase de datos de SQL AzureSíalmacenamiento de datos de SQL Azure Sí Almacenamiento de datos paralelosTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

La utilidad sqlcmd es una herramienta de línea de comandos para la ejecución ad hoc e interactiva de instrucciones y scripts de Transact-SQLTransact-SQL y para la automatización de tareas de creación de scripts de Transact-SQLTransact-SQL .The sqlcmd utility is a command-line utility for ad hoc, interactive execution of Transact-SQLTransact-SQL statements and scripts and for automating Transact-SQLTransact-SQL scripting tasks. Para usar sqlcmd interactivamente o para compilar archivos de script que se ejecutan mediante sqlcmd, los usuarios deben estar familiarizados con Transact-SQLTransact-SQL.To use sqlcmd interactively, or to build script files to be run using sqlcmd, users must understand Transact-SQLTransact-SQL. La utilidad sqlcmd se usa normalmente de las formas siguientes:The sqlcmd utility is typically used in the following ways:

  • Los usuarios escriben instrucciones Transact-SQLTransact-SQL de una forma similar al modo en que trabajan con el símbolo del sistema.Users enter Transact-SQLTransact-SQL statements in a manner similar to working at the command prompt. Los resultados se muestran en el símbolo del sistema.The results are displayed at the command prompt. Para abrir una ventana del símbolo del sistema, escriba "cmd" en el cuadro de búsqueda de Windows y haga clic en Símbolo del sistema para abrirla.To open a Command Prompt window, enter "cmd" in the Windows search box and click Command Prompt to open. En el símbolo del sistema, escriba sqlcmd seguido de una lista de opciones que quiera.At the command prompt, type sqlcmd followed by a list of options that you want. Para obtener una lista completa de las opciones admitidas por sqlcmd, vea sqlcmd (utilidad).For a complete list of the options that are supported by sqlcmd, see sqlcmd Utility.

  • Los usuarios envían un trabajo sqlcmd especificando la ejecución de una instrucción Transact-SQLTransact-SQL individual o dirigiendo la utilidad hacia un archivo de texto que contiene las instrucciones Transact-SQLTransact-SQL que se van a ejecutar.Users submit a sqlcmd job either by specifying a single Transact-SQLTransact-SQL statement to execute, or by pointing the utility to a text file that contains Transact-SQLTransact-SQL statements to execute. El resultado se dirige normalmente hacia un archivo de texto, aunque también se puede mostrar en el símbolo del sistema.The output is usually directed to a text file, but can also be displayed at the command prompt.

  • Modo SQLCMD en el Editor de consultas de SQL Server Management StudioSQL Server Management Studio .SQLCMD mode in SQL Server Management StudioSQL Server Management Studio Query Editor.

  • Objetos de administración de SQL Server (SMO)SQL Server Management Objects (SMO)

  • Trabajos CmdExec del Agente SQL Server.SQL Server Agent CmdExec jobs.

Opciones de sqlcmd que se suelen usarTypically used sqlcmd options

  • La opción del servidor (-S) que identifica la instancia de MicrosoftMicrosoft SQL ServerSQL Server a la que se conecta sqlcmd.Server option (-S) identifies the instance of MicrosoftMicrosoft SQL ServerSQL Server to which sqlcmd connects.

  • Las opciones de autenticación (-E, -U y -P) que especifican las credenciales que usa sqlcmd para conectarse a la instancia de SQL ServerSQL Server.Authentication options (-E, -U, and -P) specify the credentials that sqlcmd uses to connect to the instance of SQL ServerSQL Server. NOTA: La opción -E es la predeterminada, por lo que no es necesario especificarla.NOTE: The option -E is the default and does not need to be specified.

  • Las opciones de entrada (-Q, -q e -i) que identifican la ubicación de la entrada a sqlcmd.Input options (-Q, -q, and -i) identify the location of the input to sqlcmd.

  • La opción de salida (-o) que especifica el archivo en el que se guardará la salida de sqlcmd.The output option (-o) specifies the file in which sqlcmd is to put its output.

Conectarse a la utilidad sqlcmdConnect to the sqlcmd utility

  • Conectarse a la instancia predeterminada mediante la Autenticación de Windows para ejecutar de forma interactiva instrucciones Transact-SQLTransact-SQL :Connecting to a default instance by using Windows Authentication to interactively run Transact-SQLTransact-SQL statements:

    sqlcmd -S <ComputerName>  
    

    NOTA: En el ejemplo anterior, -E no se especifica porque es el valor predeterminado y sqlcmd se conecta a la instancia predeterminada mediante Autenticación de Windows.NOTE: In the previous example, -E is not specified because it is the default and sqlcmd connects to the default instance by using Windows Authentication.

  • Conectarse a la instancia con nombre mediante la Autenticación de Windows para ejecutar de forma interactiva instrucciones Transact-SQLTransact-SQL :Connecting to a named instance by using Windows Authentication to interactively run Transact-SQLTransact-SQL statements:

    sqlcmd -S <ComputerName>\<InstanceName>  
    

    o Administrador de configuración deor

    sqlcmd -S .\<InstanceName>  
    
  • Conectarse a una instancia con nombre mediante la Autenticación de Windows y especificar los archivos de entrada y salida:Connecting to a named instance by using Windows Authentication and specifying input and output files:

    sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt>  
    
  • Conectarse a la instancia predeterminada del equipo local mediante la Autenticación de Windows, ejecutar una consulta y mantener la ejecución de sqlcmd después de la finalización de la consulta:Connecting to the default instance on the local computer by using Windows Authentication, executing a query, and having sqlcmd remain running after the query has finished running:

    sqlcmd -q "SELECT * FROM AdventureWorks2012.Person.Person"  
    
  • Conectarse a la instancia predeterminada del equipo local mediante la Autenticación de Windows, ejecutar una consulta, dirigir la salida a un archivo y cerrar sqlcmd después de la finalización de la consulta:Connecting to the default instance on the local computer by using Windows Authentication, executing a query, directing the output to a file, and having sqlcmd exit after the query has finished running:

    sqlcmd -Q "SELECT * FROM AdventureWorks2012.Person.Person" -o MyOutput.txt  
    
  • Conectarse a una instancia con nombre mediante la Autenticación de SQL ServerSQL Server para ejecutar interactivamente instrucciones Transact-SQLTransact-SQL y hacer que sqlcmd solicite una contraseña:Connecting to a named instance using SQL ServerSQL Server Authentication to interactively run Transact-SQLTransact-SQL statements, with sqlcmd prompting for a password:

    sqlcmd -U MyLogin -S <ComputerName>\<InstanceName>  
    

    SUGERENCIA:HINT!! Para ver una lista de opciones admitidas por la utilidad sqlcmd , ejecute: sqlcmd -?.To see a list of the options that are supported by the sqlcmd utility run: sqlcmd -?.

Ejecutar instrucciones Transact-SQL de forma interactiva mediante sqlcmdRun Transact-SQL statements interactively by using sqlcmd

Se puede usar la utilidad sqlcmd de forma interactiva para ejecutar instrucciones Transact-SQLTransact-SQL en una ventana del símbolo del sistema.You can use the sqlcmd utility interactively to execute Transact-SQLTransact-SQL statements in a Command Prompt window. Para ejecutar de forma interactiva instrucciones Transact-SQLTransact-SQL mediante sqlcmd, ejecute la utilidad sin usar las opciones -Q, -q, -Zo -i para especificar archivos de entrada o consultas.To interactively execute Transact-SQLTransact-SQL statements by using sqlcmd, run the utility without using the -Q, -q, -Z, or -i options to specify any input files or queries. Por ejemplo:For example:

sqlcmd -S <ComputerName>\<InstanceName>

Cuando se ejecuta el comando sin archivos de entrada ni consultas, sqlcmd se conecta a la instancia especificada de SQL ServerSQL Server y, después, muestra una nueva línea con un 1> seguido de un carácter de subrayado intermitente, denominado símbolo del sistema sqlcmd .When the command is executed without input files or queries, sqlcmd connects to the specified instance of SQL ServerSQL Server and then displays a new line with a 1> followed by a blinking underscore that is named the sqlcmd prompt. El 1 significa que se trata de la primera línea de una instrucción Transact-SQLTransact-SQL y el símbolo del sistema sqlcmd es el punto en el que empezará la instrucción Transact-SQLTransact-SQL cuando la escriba.The 1 signifies that this is the first line of a Transact-SQLTransact-SQL statement, and the sqlcmd prompt is the point at which the Transact-SQLTransact-SQL statement will start when you type it in.

En el símbolo de sistema sqlcmd , puede escribir instrucciones Transact-SQLTransact-SQL y comandos de sqlcmd , como GO y EXIT.At the sqlcmd prompt, you can type both Transact-SQLTransact-SQL statements and sqlcmd commands, such as GO and EXIT. Cada instrucción Transact-SQLTransact-SQL se coloca en un búfer llamado caché de instrucciones.Each Transact-SQLTransact-SQL statement is put in a buffer called the statement cache. Estas instrucciones se enviarán a SQL ServerSQL Server cuando escriba el comando GO y pulse ENTRAR.These statements are sent to SQL ServerSQL Server after you type the GO command and press ENTER. Para salir de sqlcmd, escriba EXIT o QUIT al principio de una línea nueva.To exit sqlcmd, type EXIT or QUIT at the start of a new line.

Para borrar la memoria caché de instrucciones, escriba :RESET.To clear the statement cache, type :RESET. Si escribe ^C , sqlcmd se cerrará.Typing ^C causes sqlcmd to exit. ^C se puede usar también para detener la ejecución de la memoria caché de instrucciones después de emitir un comando GO .^C can also be used to stop the execution of the statement cache after a GO command has been issued.

Transact-SQLTransact-SQL que se escriben en una sesión interactiva pueden editarse si se escribe el comando :ED y el símbolo de sistema de sqlcmd . statements that are entered in an interactive session can edited by entering the :ED command and the sqlcmd prompt. Se abrirá el editor y, después de editar la instrucción Transact-SQLTransact-SQL y cerrar el editor, la instrucción Transact-SQLTransact-SQL revisada aparecerá en la ventana de comandos.The editor will open and, after editing the Transact-SQLTransact-SQL statement and closing the editor, the revised Transact-SQLTransact-SQL statement will appear in the command window. Escriba GO para ejecutar la instrucción revisada Transact-SQLTransact-SQL .Enter GO to run therevised Transact-SQLTransact-SQL statement.

Cadenas entre comillasQuoted strings

Los caracteres que están entre comillas se usan sin ningún procesamiento previo adicional, con la excepción de que las comillas se pueden insertar en una cadena especificando dos comillas consecutivas.Characters that are enclosed in quotation marks are used without any additional preprocessing, except that quotations marks can be inserted into a string by entering two consecutive quotation marks. SQL ServerSQL Server trata esta secuencia de caracteres como una comilla. treats this character sequence as one quotation mark. Sin embargo, la traducción se lleva a cabo en el servidor. Las variables de scripting no se expandirán si aparecen en una cadena.(However, the translation occurs in the server.) Scripting variables will not be expanded when they appear within a string.

Por ejemplo:For example:

sqlcmd

PRINT "Length: 5"" 7'";

GO

El conjunto de resultados es el siguiente.Here is the result set.

Length: 5" 7'

Cadenas que abarcan varias líneasStrings that span multiple lines

sqlcmd admite scripts con cadenas que abarcan varias líneas.sqlcmd supports scripts that have strings that span multiple lines. Por ejemplo, la siguiente instrucción SELECT abarca varias líneas, pero es una única cadena que se ejecuta cuando se presiona la tecla ENTRAR después de escribir GO.For example, the following SELECT statement spans multiple lines but is a single string executed when you press the ENTER key after typing GO.

SELECT First line

FROM Second line

WHERE Third line;

GO

Ejemplo de sqlcmd interactivoInteractive sqlcmd example

Este es un ejemplo de lo que se ve cuando se ejecuta sqlcmd de forma interactiva.This is an example of what you see when you run sqlcmd interactively.

Cuando se abre una ventana del símbolo del sistema, solo hay una línea similar a:When you open a Command Prompt window, there is one line similar to:

C:\> _

Esto significa que la carpeta C:\ es la carpeta actual y, si se especifica un nombre de archivo, Windows buscará ese archivo en esa carpeta.This means the folder C:\ is the current folder, and if you specify a file name, Windows will look for the file in that folder.

Escriba sqlcmd para conectarse a la instancia predeterminada de SQL ServerSQL Server en el equipo local; de esta forma, el contenido de la ventana del símbolo del sistema será:Type sqlcmd to connect to the default instance of SQL ServerSQL Server on the local computer, and the contents of the Command Prompt window will be:

C:\>sqlcmd

1> _

Esto significa que se ha conectado a una instancia de SQL ServerSQL Server y sqlcmd está listo para aceptar instrucciones Transact-SQLTransact-SQL y comandos de sqlcmd .This means you have connected to the instance of SQL ServerSQL Server and sqlcmd is now ready to accept Transact-SQLTransact-SQL statements and sqlcmd commands. El carácter de subrayado intermitente después de 1> es el símbolo del sistema sqlcmd que marca la ubicación donde se mostrarán las instrucciones y los comandos que se escriban.The flashing underscore after the 1> is the sqlcmd prompt that marks the location at which the statements and commands you type will be displayed. Escriba USE AdventureWorks2012 y pulse ENTRAR; a continuación, escriba GO y pulse ENTRAR.Now, type USE AdventureWorks2012 and press ENTER, and then type GO and press ENTER. El contenido de la ventana del símbolo del sistema será:The contents of the Command Prompt window will be:

sqlcmd

USE AdventureWorks2012;

GO

El conjunto de resultados es el siguiente.Here is the result set.

Changed database context to 'AdventureWorks2012'.

1> _

Presionar ENTRAR después de escribir USE AdventureWorks2012 indica a sqlcmd que inicie una línea nueva.Pressing ENTER after entering USE AdventureWorks2012 signaled sqlcmd to start a new line. Al presionar ENTRAR, después de escribir GO, , se indicó que sqlcmd enviara la instrucción USE AdventureWorks2012 a la instancia de SQL ServerSQL Server.Pressing ENTER, after you type GO, signaled sqlcmd to send the USE AdventureWorks2012 statement to the instance of SQL ServerSQL Server. sqlcmd devuelve un mensaje para indicar que la instrucción USE se completó correctamente y muestra un nuevo símbolo del sistema 1> como señal de que el usuario puede escribir una instrucción o un comando nuevos.sqlcmd then returned a message to indicate that the USE statement completed successfully and displayed a new 1> prompt as a signal to enter a new statement or command.

En el ejemplo siguiente se muestra qué contiene la ventana del símbolo del sistema si escribe una instrucción SELECT , GO para ejecutar SELECTy EXIT para finalizar sqlcmd:The following example shows what the Command Prompt window contains if you type a SELECT statement, a GO to execute the SELECT, and an EXIT to exit sqlcmd:

sqlcmd

USE AdventureWorks2012;

GO

SELECT TOP (3) BusinessEntityID, FirstName, LastName

FROM Person.Person;

GO

El conjunto de resultados es el siguiente.Here is the result set.

BusinessEntityID FirstName LastName

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

1 Syed Abbas

2 Catherine Abel

3 Kim Abercrombie

(3 rows affected)

1> EXIT

C:\>

Las líneas posteriores a la línea 3> GO son la salida de una instrucción SELECT .The lines after line 3> GO are the output of a SELECT statement. Para generar una salida, sqlcmd restablece el símbolo de sistema sqlcmd y muestra 1>.After you generate output, sqlcmd resets the sqlcmd prompt and displays 1>. Después de escribir EXIT en la línea 1>, la ventana del símbolo del sistema muestra la misma línea que se mostró cuando se la abrió por primera vez.After entering EXIT at line 1>, the Command Prompt window displays the same line it did when you first opened it. Esto indica que sqlcmd ha finalizado la sesión.This indicates that sqlcmd has exited its session. Ahora ya puede cerrar la ventana del símbolo del sistema escribiendo otro comando EXIT .You can now close the Command Prompt window by typing another EXIT command.

Ejecutar archivos de script Transact-SQL mediante sqlcmdRunning Transact-SQL script files using sqlcmd

Puede usar sqlcmd para ejecutar los archivos de script de base de datos.You can use sqlcmd to execute database script files. Los archivos de script son archivos de texto que contienen una combinación de instrucciones Transact-SQLTransact-SQL , comandos de sqlcmd y variables de scripting.Script files are text files that contain a mix of Transact-SQLTransact-SQL statements, sqlcmd commands, and scripting variables. Para obtener más información sobre cómo incluir variables en scripts, vea Usar sqlcmd con variables de script.For more information about how to script variables, see Use sqlcmd with Scripting Variables. sqlcmd funciona con las instrucciones, los comandos y las variables de scripting en un archivo de script de una forma parecida a como opera con instrucciones y comandos indicados de forma interactiva.sqlcmd works with the statements, commands, and scripting variables in a script file in a manner similar to how it works with statements and commands that are entered interactively. La diferencia principal es que sqlcmd lee el archivo de entrada sin pausas, en lugar de esperar a que un usuario indique las instrucciones, los comandos y las variables de scripting.The main difference is that sqlcmd reads through the input file without pause instead of waiting for a user to enter the statements, commands, and scripting variables.

Hay distintas maneras de crear archivos de script de base de datos:There are different ways to create database script files:

  • Puede generar y depurar de forma interactiva un conjunto de instrucciones Transact-SQLTransact-SQL en SQL Server Management StudioSQL Server Management Studioy, luego, guardar el contenido de la ventana Consulta como archivo de script.You can interactively build and debug a set of Transact-SQLTransact-SQL statements in SQL Server Management StudioSQL Server Management Studio, and then save the contents of the Query window as a script file.

  • Puede crear un archivo de texto que contenga instrucciones Transact-SQLTransact-SQL usando un editor de texto, como el Bloc de notas.You can create a text file that contains Transact-SQLTransact-SQL statements by using a text editor, such as Notepad.

EjemplosExamples

A.A. Ejecutar un script con sqlcmdRunning a script by using sqlcmd

Inicie el Bloc de notas y escriba las siguientes instrucciones Transact-SQLTransact-SQL :Start Notepad, and type the following Transact-SQLTransact-SQL statements:

USE AdventureWorks2012;

GO

SELECT TOP (3) BusinessEntityID, FirstName, LastName

FROM Person.Person;

GO

Cree una carpeta llamada MyFolder y guarde el script como el archivo MyScript.sql en la carpeta C:\MyFolder.Create a folder named MyFolder and then save the script as the file MyScript.sql in the folder C:\MyFolder. Escriba lo siguiente en el símbolo del sistema para ejecutar el script y coloque la salida en MyOutput.txt de MyFolder:Enter the following at the command prompt to run the script and put the output in MyOutput.txt in MyFolder:

sqlcmd -i C:\MyFolder\MyScript.sql -o C:\MyFolder\MyOutput.txt

Al mostrar el contenido de MyOutput.txt en el Bloc de notas, verá lo siguiente:When you view the contents of MyOutput.txt in Notepad, you will see the following:

Changed database context to 'AdventureWorks2012'.

BusinessEntityID FirstName LastName

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

1 Syed Abbas

2 Catherine Abel

3 Kim Abercrombie

(3 rows affected)

B.B. Usar sqlcmd con una conexión administrativa dedicadaUsing sqlcmd with a dedicated administrative connection

En el siguiente ejemplo, se utiliza sqlcmd para conectarse a un servidor que tiene un problema de bloqueo mediante la conexión de administrador dedicada (DAC).In the following example, sqlcmd is used to connect to a server that has a blocking problem by using the dedicated administrator connection (DAC).

C:\>sqlcmd -S ServerName -A

1> SELECT blocked FROM sys.dm_exec_requests WHERE blocked <> 0;

2> GO

El conjunto de resultados es el siguiente.Here is the result set.

spid blocked

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

62 64

(1 rows affected)

Utilice sqlcmd para finalizar el proceso de bloqueo.Use sqlcmd to end the blocking process.

1> KILL 64;

2> GO

C.C. Usar sqlcmd para ejecutar un procedimiento almacenadoUsing sqlcmd to execute a stored procedure

En el ejemplo siguiente se muestra cómo ejecutar un procedimiento almacenado con sqlcmd.The following example shows how to execute a stored procedure by using sqlcmd. Cree el siguiente procedimiento almacenado.Create the following stored procedure.

USE AdventureWorks2012;

IF OBJECT_ID ( ' dbo.ContactEmailAddress, 'P' ) IS NOT NULL

DROP PROCEDURE dbo.ContactEmailAddress;

GO

CREATE PROCEDURE dbo.ContactEmailAddress

(

@FirstName nvarchar(50)

,@LastName nvarchar(50)

)

AS

SET NOCOUNT ON

SELECT EmailAddress

FROM Person.Person

WHERE FirstName = @FirstName

AND LastName = @LastName;

SET NOCOUNT OFF

En el símbolo del sistema sqlcmd , escriba lo siguiente:At the sqlcmd prompt, enter the following:

C:\sqlcmd

1> :Setvar FirstName Gustavo

1> :Setvar LastName Achong

1> EXEC dbo.ContactEmailAddress $(Gustavo),$(Achong)

2> GO

EmailAddress

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

gustavo0@adventure-works.com

D.D. Usar sqlcmd para mantenimiento de la base de datosUsing sqlcmd for database maintenance

El siguiente ejemplo muestra cómo utilizar sqlcmd para una tarea de mantenimiento de base de datos.The following example shows how to use sqlcmd for a database maintenance task. Cree C:\BackupTemplate.sql con el siguiente código.Create C:\BackupTemplate.sql with the following code.

USE master;

BACKUP DATABASE [$(db)] TO DISK='$(bakfile)';

En el símbolo del sistema sqlcmd , escriba lo siguiente:At the sqlcmd prompt, enter the following:

C:\ >sqlcmd

1> :connect <server>

Sqlcmd: Successfully connected to server <server>.

1> :setvar db msdb

1> :setvar bakfile c:\msdb.bak

1> :r c:\BackupTemplate.sql

2> GO

Changed database context to 'master'.

Processed 688 pages for database 'msdb', file 'MSDBData' on file 2.

Processed 5 pages for database 'msdb', file 'MSDBLog' on file 2.

BACKUP DATABASE successfully processed 693 pages in 0.725 seconds (7.830 MB/sec)

E.E. Usar sqlcmd para ejecutar código en múltiples instanciasUsing sqlcmd to execute code on multiple instances

El siguiente código en un archivo muestra un script que se conecta a dos instancias.The following code in a file shows a script that connects to two instances. Observe el comando GO antes de la conexión a la segunda instancia.Notice the GO before the connection to the second instance.

:CONNECT <server>\,<instance1>

EXEC dbo.SomeProcedure

GO

:CONNECT <server>\,<instance2>

EXEC dbo.SomeProcedure

GO

E.E. Devolver salida XMLReturning XML output

El siguiente ejemplo muestra cómo se devuelve la salida XML sin formato, en un flujo continuo.The following example shows how XML output is returned unformatted, in a continuous stream.

C:\>sqlcmd -d AdventureWorks2012

1> :XML ON

1> SELECT TOP 3 FirstName + ' ' + LastName + ', '

2> FROM Person.Person

3> GO

Syed Abbas, Catherine Abel, Kim Abercrombie,

F.F. Usar sqlcmd en un archivo de script de WindowsUsing sqlcmd in a Windows script file

Un comando sqlcmdcomo sqlcmd -i C:\InputFile.txt -o C:\OutputFile.txt, se puede ejecutar en un archivo .bat junto con VBScript.A sqlcmdcommand such as sqlcmd -i C:\InputFile.txt -o C:\OutputFile.txt, can be executed in a .bat file together with VBScript. En este caso, no se deben usar opciones interactivas.In this case, do not use interactive options. sqlcmd se debe instalar en el equipo que ejecuta el archivo .bat.sqlcmd must be installed on the computer that is executing the .bat file.

Primero, cree los siguientes cuatro archivos:First, create the following four files:

  • C:\badscript.sqlC:\badscript.sql

    SELECT batch_1_this_is_an_error  
    GO  
    SELECT 'batch #2'  
    GO  
    
  • C:\goodscript.sqlC:\goodscript.sql

    SELECT 'batch #1'  
    GO  
    SELECT 'batch #2'  
    GO  
    
  • C:\returnvalue.sqlC:\returnvalue.sql

    :exit(select 100)  
    @echo off  
    C:\windowsscript.bat  
    @echo off  
    
    echo Running badscript.sql  
    sqlcmd -i badscript.sql -b -o out.log  
    if not errorlevel 1 goto next1  
    echo == An error occurred   
    
    :next1  
    
    echo Running goodscript.sql  
    sqlcmd -i goodscript.sql -b -o out.log  
    if not errorlevel 1 goto next2  
    echo == An error occurred   
    
    :next2  
    echo Running returnvalue.sql  
    sqlcmd -i returnvalue.sql -o out.log  
    echo SQLCMD returned %errorlevel% to the command shell  
    
    :exit  
    
  • C:\windowsscript.batC:\windowsscript.bat

    @echo off  
    
    echo Running badscript.sql  
    sqlcmd -i badscript.sql -b -o out.log  
    if not errorlevel 1 goto next1  
    echo == An error occurred   
    
    :next1  
    
    echo Running goodscript.sql  
    sqlcmd -i goodscript.sql -b -o out.log  
    if not errorlevel 1 goto next2  
    echo == An error occurred   
    
    :next2  
    echo Running returnvalue.sql  
    sqlcmd -i returnvalue.sql -o out.log  
    echo SQLCMD returned %errorlevel% to the command shell  
    
    :exit  
    

    Después, en el símbolo del sistema, ejecute C:\windowsscript.bat:Then, at the command prompt, run C:\windowsscript.bat:

    C:\>windowsscript.bat

    Running badscript.sql

    == An error occurred

    Running goodscript.sql

    Running returnvalue.sql

    SQLCMD returned 100 to the command shell

G.G. Usar sqlcmd para establecer el cifrado en la base de datos de Windows Azure SQLUsing sqlcmd to set encryption on Windows Azure SQL Database

Se puede ejecutar un comando sqlcmden una conexión con datos de Base de datos SQLSQL Database para especificar el cifrado y la confianza del certificado.A sqlcmdcan be executed on a connection to Base de datos SQLSQL Database data on to specify encryption and certificate trust. Hay dos opciones sqlcmddisponibles:Two sqlcmd``options are available:

  • El modificador -N lo usa el cliente para solicitar una conexión cifrada.The -N switch is used by the client to request an encrypted connection. Esta opción es equivalente a ADO.net ENCRYPT = true.This option is equivalent to the ADO.net option ENCRYPT = true.

  • El modificador -C lo emplea el cliente para configurarlo implícitamente para el certificado de servidor confiable y no validarlo.The –C switch is used by the client to configure it to implicitly the trust server certificate and not validate it. Esta opción es equivalente a ADO.net TRUSTSERVERCERTIFICATE = true.This option is equivalent to the ADO.net option TRUSTSERVERCERTIFICATE = true.

    El servicio Base de datos SQLSQL Database no admite todas las opciones disponibles SET en una instancia de SQL Server.The Base de datos SQLSQL Database service does not support all the SET options available on a SQL Server instance. Las siguientes opciones producen un error cuando la opción SET correspondiente está establecida en ON u OFF:The following options throw an error when the corresponding SET option is set to ON or OFF:

  • SET ANSI_DEFAULTSSET ANSI_DEFAULTS

  • SET ANSI_NULLSSET ANSI_NULLS

  • SET REMOTE_PROC_TRANSACTIONSSET REMOTE_PROC_TRANSACTIONS

  • SET ANSI_NULL_DEFAULTSET ANSI_NULL_DEFAULT

    Las siguientes opciones de SET no producen excepciones pero no se pueden usar.The following SET options do not throw exceptions but cannot be used. Se han quedado en desuso:They are deprecated:

  • SET CONCAT_NULL_YIELDS_NULLSET CONCAT_NULL_YIELDS_NULL

  • SET ANSI_PADDINGSET ANSI_PADDING

  • SET QUERY_GOVERNOR_COST_LIMITSET QUERY_GOVERNOR_COST_LIMIT

SintaxisSyntax

En los siguientes ejemplos se hace referencia a los casos donde la configuración del proveedor Native Client SQL ServerSQL Server incluye: ForceProtocolEncryption = False, Trust Server Certificate = NoThe following examples refer to cases where SQL ServerSQL Server Native Client Provider settings include: ForceProtocolEncryption = False, Trust Server Certificate = No

Conecte usando las credenciales de Windows y cifre la comunicación:Connect using Windows credentials and encrypt communication:

SQLCMD –E –N  

Conecte usando las credenciales de Windows y el certificado de servidor de confianza:Connect using Windows credentials and trust server certificate:

SQLCMD –E –C  

Conecte usando las credenciales de Windows, comunicación cifrada y el certificado de servidor de confianza:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E –N –C  

En los siguientes ejemplos se hace referencia a los casos donde la configuración del proveedor Native Client SQL ServerSQL Server incluye: ForceProtocolEncryption = True, TrustServerCertificate = Yes.The following examples refer to cases where SQL ServerSQL Server Native Client Provider settings include: ForceProtocolEncryption = True, TrustServerCertificate = Yes.

Conecte usando las credenciales de Windows, comunicación cifrada y el certificado de servidor de confianza:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E  

Conecte usando las credenciales de Windows, comunicación cifrada y el certificado de servidor de confianza:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E –N  

Conecte usando las credenciales de Windows, comunicación cifrada y el certificado de servidor de confianza:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E –T  

Conecte usando las credenciales de Windows, comunicación cifrada y el certificado de servidor de confianza:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E –N –C  

Si el proveedor especifica ForceProtocolEncryption = True se habilita el cifrado aun cuando Encrypt=No en la cadena de conexión.If the provider specifies ForceProtocolEncryption = True then encryption is enabled even if Encrypt=No in the connection string.

Más información sobre sqlcmdMore about sqlcmd

sqlcmd (utilidad) sqlcmd Utility
Usar sqlcmd con variables de script Use sqlcmd with Scripting Variables
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