Pregunta

Tengo varios archivos .sql que tengo que ejecutar para aplicar los cambios realizados por otros desarrolladores en una base de datos 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 manera de ejecutarlos todos de una vez?

¿Fue útil?

Solución

Cree un archivo .bat con el siguiente comando:

for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause

Coloque este archivo .bat en el directorio desde el que desea que se ejecuten los archivos .sql, haga doble clic en el archivo .bat y termine.

Otros consejos

Usar POR. Desde el símbolo del sistema:

c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
  1. En SQL Management Studio, abra una nueva consulta y escriba todos los archivos como se muestra a continuación

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  2. Vaya al menú de consulta en SQL Management Studio y asegúrese de que el modo SQLCMD esté habilitado
  3. Haga clic en el modo SQLCMD; Los archivos se seleccionarán en gris como se muestra a continuación

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  4. Ahora ejecutar

Asegúrese de tener habilitado SQLCMD haciendo clic en la opción de modo de consulta> SQLCMD en el estudio de administración.

  1. Supongamos que tiene cuatro archivos .sql (script1.sql,script2.sql,script3.sql,script4.sql) en una carpeta c:\scripts.

  2. Cree un archivo de script principal (main.sql) con lo siguiente:

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    :r c:\Scripts\script4.sql
    

    Guardar el main.sql en c: scripts en sí.

  3. Crear un archivo por lotes llamado ExecuteScripts.bat con lo siguiente:

    SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
    PAUSE
    

    Recuerda reemplazar <YourDatabaseName> Con la base de datos desea ejecutar sus scripts. Por ejemplo, si la base de datos es "empleado", el comando sería el siguiente:

    SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
    PAUSE
    
  4. Ejecute el archivo por lotes haciendo doble clic en lo mismo.

Podrías usar Propagar APEXSQL. 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 múltiples bases de datos (incluso múltiples servidores). Puede crear la lista de scripts y guardarla, solo seleccione esa lista cada vez que desee ejecutar esos mismos scripts en el orden creado (también se pueden agregar múltiples listas de scripts):

Select scripts

Cuando se seleccionan scripts y 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 bases de datos seleccionadas en el orden dado:

Scripts execution

Consulta general

Guarde las líneas a continuación en el bloc de notas con el nombre lotes y coloque dentro de la carpeta donde hay todo su archivo de script

 for %%G in (*.sql) do sqlcmd /S servername /d databasename  -i"%%G"
    pause

EJEMPLO

para %% g in (*.sql) do sqlcmd /s NFGDDD23432 /d EmpyLeedB -i "%% g" pausa

En algún momento, si el inicio de sesión falló para usted, use el siguiente código con nombre de usuario y clave

for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause

para %% g in (*.sql) do sqlcmd /s NE8148SERVER /d EmpyLeedB -U Escocés -PAGS Tigre -i "%% g" pausa

Después de crear el archivo BAT dentro de la carpeta en la que están allí los archivos de su script.

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:

  • Arrastrar y soltar archivos de script
  • Ejecutar un directorio de archivos de script
  • SQL Script Out Pon Mensajes durante la ejecución
  • Script aprobado o fallido que son de color verde y rojo (amarillo para correr)
  • Opción de error de parada
  • Abrir el script en la opción de error
  • Ejecutar el informe con el tiempo tomado para cada script
  • Tiempo de duración total
  • Probar la conexión DB
  • Asíncrono
  • .NET 4 y probado con SQL 2008
  • Archivo exe único
  • Mata la conexión en cualquier momento

Lo que sé que puede usar los comandos OSQL o SQLCMD para ejecutar múltiples archivos SQL. El inconveniente es que tendrá que crear un script para ambos comandos.

Uso de SQLCMD para ejecutar múltiples scripts de SQL Server

OSQL (esto es para SQL Server 2000)

http://msdn.microsoft.com/en-us/library/aa213087(v=sql.80).aspx

@echo off
cd C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE

for %%a in (D:\abc\*.sql) do (
echo %%a
mysql --host=ip --port=3306 --user=uid--password=ped < %%a
)

Paso 1: Las líneas de arriba copian en Note Pad, guárdelo como murciélago.

Paso 2: en la carpeta ABC de la unidad D en todos los archivos SQL en consultas ejecutadas en SQL Server.

Paso 3: Dale a su IP, ID de usuario y contraseña.

Puede crear un solo script que llame a todos los demás.

Pon lo siguiente en un archivo por lotes:

@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"

Cuando ejecuta ese archivo por lotes, creará un nuevo script llamado 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 extienda el archivo por lotes para llamar sqlplus Después de crear el all.sql guion)

Para ejecutar cada sqlfile en el mismo directorio, use el siguiente comando:

ls | awk '{print "@"$0}' > all.sql

Este comando creará un solo archivo SQL con los nombres de cada archivo SQL en el directorio agregado por "@".

Después de la all.sql se crea simplemente ejecutar all.sql Con SQLPLUS, esto ejecutará cada archivo SQL en el all.sql.

Si puede usar SQL interactivo:

1 - Cree un archivo .bat con este código:

@ECHO OFF ECHO
for %%G in (*.sql) do dbisql -c "uid=dba;pwd=XXXXXXXX;ServerName=INSERT-DB-NAME-HERE" %%G
pause

2 - Cambie el PWD y el nombre de servidor.

3 - Coloque el archivo .bat en la carpeta que contiene archivos .sql y ejecútelo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top