¿Ejecutando un conjunto de consultas SQL usando un archivo por lotes?

Estoy usando una base de datos de SQL Server. Tengo estas consultas SQL:

Delete from TableA; Delete from TableB; Delete from TableC; Delete from TableD; Delete from TableE; 

¿Es posible ejecutar estos scripts usando un archivo por lotes? La base de datos es una base de datos remota.

¡Gracias!

Guarde los comandos en un archivo .SQL , por ejemplo: ClearTables.sql , por ejemplo, en su carpeta C:\temp .

Contenido de C:\Temp\ClearTables.sql

 Delete from TableA; Delete from TableB; Delete from TableC; Delete from TableD; Delete from TableE; 

Luego use sqlcmd para ejecutarlo de la siguiente manera. Como dijo que la base de datos es remota, use la siguiente syntax (después de actualizar el servidor y el nombre de instancia de la base de datos).

 sqlcmd -S \ -i C:\Temp\ClearTables.sql 

Por ejemplo, si el nombre de su computadora remota es SQLSVRBOSTON1 y el nombre de instancia de la base de datos es MyDB1, entonces el comando sería.

 sqlcmd -E -S SQLSVRBOSTON1\MyDB1 -i C:\Temp\ClearTables.sql 

También tenga en cuenta que -E especifica la autenticación predeterminada. Si tiene un nombre de usuario y una contraseña para conectarse, use los conmutadores -U y -P .

Ejecutará todo esto abriendo una ventana de comando de CMD .

Usando un archivo por lotes.

Si desea guardarlo en un archivo por lotes y hacer doble clic para ejecutarlo, hágalo de la siguiente manera.

Cree y guarde el ClearTables.bat como tal.

 echo off sqlcmd -E -S SQLSVRBOSTON1\MyDB1 -i C:\Temp\ClearTables.sql set /p delExit=Press the ENTER key to exit...: 

Luego haz doble clic para ejecutarlo. Ejecutará los comandos y esperará hasta que presione una tecla para salir, para que pueda ver el resultado del comando.

Consulte la herramienta de línea de comandos SQLCMD que viene con SQL Server. http://technet.microsoft.com/en-us/library/ms162773.aspx

Use la utilidad SQLCMD .

http://technet.microsoft.com/en-us/library/ms162773.aspx

Hay una statement de conexión que le permite pasar del servidor de base de datos A al servidor B en el mismo lote.

: Connect server_name [\ instance_name] [-l timeout] [-U user_name [-P password]] Se conecta a una instancia de SQL Server. También cierra la conexión actual.

Por otro lado, si está familiarizado con PowerShell , puede hacer lo mismo programático.

http://technet.microsoft.com/en-us/library/cc281954(v=sql.105).aspx

Diferentes caminos:

  1. Usar el Agente SQL Server (si es una instancia local)
    programe un trabajo en SQL Server Agent con un nuevo paso que tenga el tipo “T-SQL” y luego ejecute el trabajo.

  2. Usando SQLCMD
    Para usar SQLCMD, consulte http://technet.microsoft.com/en-us/library/ms162773.aspx

  3. Usando SQLPS
    Para usar SQLPS, consulte http://technet.microsoft.com/en-us/library/cc280450.aspx