Pregunta

Nuestra instancia de SQL Server 2000 alberga varias bases de datos que son similares, uno para cada uno de nuestros clientes.Cuando llega el momento de actualizar todos ellos, utilizamos la Puerta Roja SQL Compare para generar una secuencia de comandos de migración entre el desarrollo de la base de datos y una copia del estado actual de los DB de todos los clientes de la base de datos.

SQL Compare genera un script que es transaccional, si se produce un error, la secuencia de comandos se deshace todo.Pero en la actualidad nuestro sistema utiliza un método que divide la secuencia de comandos en el lote de los separadores (la VAYA declaración) y, a continuación, ejecuta cada comando por separado, que arruina todos los transaccional cosas.El IR la declaración no es compatible cuando se consulta la base de datos de programación (en ASP clásico)

Quiero saber cómo puedo ejecutar ese script (manteniendo las transacciones) en todas las bases de datos (como 250 DB), manualmente o mediante programación en una herramienta?En El Analizador De Consultas, necesitamos seleccionar cada DB y de prensa Ejecutar que es bastante largo para el número de DB que tenemos.

¿Fue útil?

Solución

sqlcmd herramienta de línea de comandos . Tengo la misma situación en el servidor de trabajo.

Tengo la secuencia de comandos en el archivo * .sql y la lista de bases de datos en el segundo archivo. Tengo pequeño guión * .bat, que iterar a través de todas las bases de datos y ejecutar script utilizando sqlcmd de comandos.

En más detalles Tengo la siguiente manera:

  • archivo DB.ini con todas las bases de datos sobre el que desea implementar mi guión
  • sql / directorio donde almaceno todos los scripts
  • runIt.bat - escritura de guiones que despliega

La línea de comandos se parece más-menos así:

sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -d <database_name> -T

En SQL Server 2000 que era osql utilidad

Actualizar

Red Gate ahora tiene una herramienta llamada SQL multi secuencias de comandos , que básicamente hace exactamente lo que quiere. I apoya SQL 2000-2008 R2 y consultas que se ejecutan en múltiples bases de datos en paralelo que mejoran el rendimiento.

Otros consejos

Si puede utilizar SSMS desde SQL 2005 o 2008, entonces yo recomiendo el SSMS Herramienta empacar

7 años más tarde, tuve el mismo problema por lo que muchas veces, así lo hice y publicó el proyecto:

TAKODEPLOY

Aquí están algunas características:

  • Obtener todas las bases de datos desde una sola instancia y aplicar un filtro de nombre. O simplemente una única conexión directa.
  • fuentes de bases de datos Mix tanto como usted desee. Ejemplo, dos directa y una instancia completa con o withut un filtro.
  • Editor de Script (Avalon texto, misma monodevelop utiliza)
  • Los guiones se analizan y se detectan errores antes de ejecutar.
  • Los scripts son 'formas dividido' por las declaraciones GO.
  • Guarde su despliegue en un archivo
  • Obtener una lista de todas las bases de datos antes de implementar.
  • Ver en tiempo real lo que está ocurriendo (se recomiendan aquí instrucciones PRINT!).
  • reversión automática a la base de datos independiente si se produce algún error.
  • Actualizaciones transparentes a través de ardilla.

Se puede conseguir en: https://github.com/andreujuanc/TakoDeploy

No estoy seguro si esto va a funcionar, pero trate de reemplazar el IR declaraciones con punto y coma, y se ejecuta la instrucción completa en un solo lote.

Si no recuerdo mal, también puede crear una secuencia de comandos en SQL Comparar a cambiar todo de nuevo al estado en que se inició en. Es posible que desee generar tanto.

Cuando hice este tipo de despliegue (ha sido un tiempo), me cargó por primera vez a un servidor de ensayo que se realizó exactamente como prod antes de empezar a asegurarse de que los guiones trabajarían en prod. Si hay algo que no (por lo general debido al orden que los scripts se llevaron a cabo, no se puede establecer una clave externa a una tabla que aún no existe, por ejemplo). También con guión cuadro Al cambios primero, luego todos los cambios de vista, entonces todos los cambios UDF, a continuación, todos los cambios de procedimiento almacenado. Esto reducirá en gran medida enla fallos debidos a objetos aún no existentes, pero todavía tenía generalmente unos pocos que necesita ser ajustado.

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