Tengo varios archivos .sql que tengo que ejecutar para aplicar los cambios realizados por otros desarrolladores en una base de datos de SQL Server 2005. Los archivos se nombran de acuerdo con el siguiente patrón:
0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...
¿Hay alguna forma de ejecutarlos todos de una vez?
for %%G in (*.sql) do sqlcmd /S servername /d databaseName -U username -P "password" -i"%%G"
Utilice FOR . Desde el símbolo del sistema:
fuente
for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f" >> sql.log 2>&1)
Puede leer más sobre la redirección de la salida aquíEn SQL Management Studio, abra una nueva consulta y escriba todos los archivos como se muestra a continuación
Haga clic en Modo SQLCMD; los archivos se seleccionarán en gris como se muestra a continuación
fuente
Asegúrese de tener SQLCMD habilitado haciendo clic en la opción Consulta> Modo SQLCMD en el estudio de administración.
Suponga que tiene cuatro archivos .sql (
script1.sql,script2.sql,script3.sql,script4.sql
) en una carpetac:\scripts
.Cree un archivo de secuencia de comandos principal (Main.sql) con lo siguiente:
Guarde Main.sql en c: \ scripts.
Cree un archivo por lotes
ExecuteScripts.bat
con el siguiente nombre:Recuerde reemplazar
<YourDatabaseName>
con la base de datos que desea ejecutar sus scripts. Por ejemplo, si la base de datos es "Empleado", el comando sería el siguiente:Ejecute el archivo por lotes haciendo doble clic en el mismo.
fuente
-b
ejemplo:SQLCMD -b -i "file 1.sql","file 2.sql"
Puede utilizar ApexSQL Propagate . Es una herramienta gratuita que ejecuta múltiples scripts en múltiples bases de datos. Puede seleccionar tantos scripts como necesite y ejecutarlos en una o varias bases de datos (incluso varios servidores). Puede crear una lista de scripts y guardarla, luego simplemente seleccione esa lista cada vez que desee ejecutar esos mismos scripts en el orden creado (también se pueden agregar varias listas de scripts):
Cuando se seleccionan los scripts y las bases de datos, se mostrarán en la ventana principal y todo lo que tiene que hacer es hacer clic en el botón "Ejecutar" y todos los scripts se ejecutarán en las bases de datos seleccionadas en el orden indicado:
fuente
Consulta general
guarde las siguientes líneas en el bloc de notas con el nombre batch.bat y colóquelas dentro de la carpeta donde están todos sus archivos de script
EJEMPLO
para %% G en (* .sql), haga sqlcmd / S NFGDDD23432 / d EMPLYEEDB -i "%% G" pause
En algún momento, si el inicio de sesión falló, utilice el siguiente código con nombre de usuario y contraseña
para %% G en (* .sql), haga sqlcmd / S NE8148server / d EMPLYEEDB -U Scott -P tiger -i "%% G" pause
Después de crear el archivo bat dentro de la carpeta en la que se encuentran sus archivos de script, simplemente haga clic en el archivo bat, se ejecutarán sus scripts
fuente
Escribí una utilidad de código abierto en C # que le permite arrastrar y soltar muchos archivos SQL y comenzar a ejecutarlos en una base de datos.
La utilidad tiene las siguientes características:
fuente
La forma más fácil que encontré incluyó los siguientes pasos (el único requisito es estar en Win7 +):
Suena largo, pero en realidad es muy rápido ... (suena largo como describí incluso los pasos más pequeños)
fuente
Lo que sé es que puede usar los comandos osql o sqlcmd para ejecutar varios archivos sql. El inconveniente es que tendrá que crear un script para ambos comandos.
Uso de SQLCMD para ejecutar varios scripts de SQL Server
OSQL (esto es para sql server 2000)
http://msdn.microsoft.com/en-us/library/aa213087(v=SQL.80).aspx
fuente
Paso 1: las líneas anteriores se copian en el bloc de notas y se guardan como bat.
Paso 2: En la carpeta abc de la unidad d en todos los archivos Sql en las consultas ejecutadas en el servidor SQL.
Paso 3: Proporcione su IP, identificación de usuario y contraseña.
fuente
Puede crear un único script que llame a todos los demás.
Ponga lo siguiente en un archivo por lotes:
Cuando ejecute ese archivo por lotes, se creará un nuevo script con el nombre
all.sql
en el mismo directorio donde se encuentra el archivo por lotes. Buscará todos los archivos con la extensión.sql
en el mismo directorio donde se encuentra el archivo por lotes.Luego puede ejecutar todos los scripts usando
sqlplus user/pwd @all.sql
(o extender el archivo por lotes para llamarsqlplus
después de crear elall.sql
script)fuente
Para ejecutar cada archivo SQL en el mismo directorio, use el siguiente comando:
Este comando creará un solo archivo SQL con los nombres de cada archivo SQL en el directorio agregado por "@".
Una vez
all.sql
creado, simplemente ejecuteall.sql
con SQLPlus, esto ejecutará todos los archivos sql en elall.sql
.fuente
Si puede utilizar SQL interactivo:
1 - Crea un archivo .BAT con este código:
2 - Cambie pwd y ServerName.
3 - Coloque el archivo .BAT en la carpeta que contiene los archivos .SQL y ejecútelo.
fuente