Me gustaría automatizar la generación de scripts en SQL Server Management Studio 2008.
Ahora mismo lo que hago es:
- Haga clic derecho en mi base de datos, Tareas, "Generar scripts ..."
- seleccione manualmente todas las opciones de exportación que necesito y presione seleccionar todo en la pestaña "seleccionar objeto"
- Seleccione la carpeta de exportación
- Finalmente, presione el botón "Finalizar"
¿Existe alguna forma de automatizar esta tarea?
Editar: Quiero generar scripts de creación , no cambiar scripts.
Respuestas:
Lo que Brann menciona de Visual Studio 2008 SP1 Team Suite es la versión 1.4 del Asistente para publicación de bases de datos. Está instalado con sql server 2008 (¿tal vez solo profesional?) En \ Program Files \ Microsoft SQL Server \ 90 \ Tools \ Publishing \ 1.4. La llamada VS del explorador del servidor simplemente está llamando a esto. Puede lograr la misma funcionalidad a través de la línea de comando como:
No sé si la v1.4 tiene los mismos problemas que la v1.1 (los usuarios se convierten en roles, las restricciones no se crean en el orden correcto), pero no es una solución para mí porque no crea secuencias de comandos de objetos a diferentes archivos como la opción Tareas-> Generar scripts en SSMS. Actualmente estoy usando una versión modificada de Scriptio (usa la API MS SMO) para actuar como un reemplazo mejorado para el asistente de publicación de bases de datos (sqlpubwiz.exe). Actualmente no se puede programar desde la línea de comandos, podría agregar esa contribución en el futuro.
Scriptio se publicó originalmente en el blog de Bill Graziano, pero posteriormente Bill lo publicó en CodePlex y otros lo actualizaron. Lea la discusión para ver cómo compilar para usar con SQL Server 2008.
http://scriptio.codeplex.com/
EDITAR: Desde entonces comencé a usar el producto SQL Compare de RedGate para hacer esto. Es un reemplazo muy bueno para todo lo que debería haber sido el asistente de publicación de SQL. Eliges una base de datos, una copia de seguridad o una instantánea como fuente y una carpeta como ubicación de salida y lo vuelca todo muy bien en una estructura de carpetas. Resulta ser el mismo formato que usa su otro producto, SQL Source Control.
fuente
SqlPubwiz tiene opciones muy limitadas en comparación con la generación de scripts en SSMS. Por el contrario, las opciones disponibles con SMO coinciden casi exactamente con las de SSMS, lo que sugiere que probablemente sea el mismo código. (¡Espero que MS no lo haya escrito dos veces!) Hay varios ejemplos en MSDN como este que muestran tablas de secuencias de comandos como objetos individuales. Sin embargo, si desea que todo se ejecute correctamente con un esquema 'completo' que incluya objetos 'DRI' (integridad referencial declarativa) como claves externas, las tablas de secuencias de comandos individualmente no resuelven las dependencias correctamente. Descubrí que es necesario recopilar todos los URN y entregárselos al scripter como una matriz. Este código, modificado del ejemplo,
fuente
Microsoft.SqlServer.Management.SqlScriptPublish.ScriptPublishWizard
del ensamblado C: \ Archivos de programa (x86) \ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ Microsoft.SqlServer.Management.SqlScriptPublishUI.dll. Esto es lo que usa SSMS. (Alternativamente, puede mirar la claseMicrosoft.SqlServer.Management.UI.GenerateScript
del ensamblado C: \ Archivos de programa (x86) \ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ ReplicationDialog.dll.)Escribí una utilidad de línea de comando de código abierto llamada SchemaZen que hace esto. Es mucho más rápido que la creación de scripts desde Management Studio y su salida es más amigable con el control de versiones. Admite la creación de scripts tanto de esquema como de datos.
Para generar scripts, ejecute:
Luego, para recrear la base de datos a partir de scripts, ejecute:
fuente
Puede utilizar el Objeto de administración de SQL Server (SMO) para automatizar las tareas de administración de SQL Server 2005, incluida la generación de scripts: http://msdn.microsoft.com/en-us/library/ms162169.aspx .
fuente
Si eres un desarrollador, definitivamente elige SMO. Aquí hay un enlace a la clase Scripter, que es su punto de partida:
Clase de scripter
fuente
No veo que powershell con SQLPSX se mencione en ninguna de estas respuestas ... Personalmente no he jugado con él, pero parece muy fácil de usar y se adapta idealmente a este tipo de tareas de automatización, con tareas como:
(ref: http://www.sqlservercentral.com/Forums/Topic1167710-1550-1.aspx#bm1168100 )
Página del proyecto: http://sqlpsx.codeplex.com/
La principal ventaja de este enfoque es que combina la configurabilidad / personalización de usar SMO directamente, con la conveniencia y facilidad de mantenimiento de usar una herramienta simple existente como el Asistente de publicación de bases de datos.
fuente
En Herramientas> Opciones> Diseñadores> Diseñadores de tablas y bases de datos, hay una opción para 'Generar scripts de cambio automáticamente' que generará uno por cada cambio que realice en el momento de guardarlo.
fuente
Puede hacerlo con código T-SQL usando las tablas INFORMATION_SCHEMA.
También hay herramientas de terceros: me gusta Apex SQL Script precisamente para el uso del que está hablando. Lo ejecuto completamente desde la línea de comandos.
fuente
Pruebe las nuevas herramientas de línea de comandos de SQL Server para generar scripts T-SQL y supervisar las vistas de administración dinámica.
Funcionó para mí como un encanto. Es una nueva herramienta basada en Python de Microsoft que se ejecuta desde la línea de comandos. Todo funciona como se describe en la página de Microsoft (ver enlace a continuación) Funcionó para mí con el servidor SQL 2012.
Lo instalas con pip:
Resumen de parámetros de comando como de costumbre con h para ayuda:
Sugerencia: si inicia sesión en SQL-Server a través de la autenticación de Windows, simplemente deje el nombre de usuario y la contraseña.
https://cloudblogs.microsoft.com/sqlserver/2017/05/17/try-new-sql-server-command-line-tools-to-generate-t-sql-scripts-and-monitor-dynamic-management- puntos de vista/
fuente
Si desea una solución de Microsoft, puede probar: Microsoft SQL Server Database Publishing Wizard 1.1
http://www.microsoft.com/downloads/details.aspx?FamilyId=56E5B1C5-BF17-42E0-A410-371A838E570A&displaylang=en
Crea un proceso por lotes que puede ejecutar en cualquier momento que necesite para reconstruir los scripts.
fuente
He estado usando DB Comparer: es un script de DB completo gratuito y sin complicaciones y se puede comparar con otro DB y también producir un script Diff. Excelente para scripts de cambio de desarrollo a producción. http://www.dbcomparer.com/
fuente
También existe esta sencilla herramienta de línea de comandos que creo para mis necesidades.
http://mycodepad.wordpress.com/2013/11/18/export-ms-sql-database-schema-with-c/
Puede exportar una base de datos completa e intenta exportar objetos cifrados. Todo se almacena en carpetas y archivos sql separados para facilitar la comparación de archivos.
El código también está disponible en github.
fuente
Desde Visual Studio 2008 SP1 TeamSuite:
En la pestaña Server Explorer / Data Connections, hay una herramienta de publicación en el proveedor que hace lo mismo que el "Asistente de publicación de bases de datos de Microsoft SQL Server", pero que es compatible con MS Sql Server 2008.
fuente
Estoy usando VS 2012 (para DB en MSSQL Server 2008) la base de datos de comparación tiene una opción para guardarla, la comparación y las opciones. Ésta es esencialmente la configuración para la entrega. Después de eso, puede actualizar o generar un script.
Me resulta un poco incómodo cargarlo desde el archivo más tarde (arrastrar y soltar desde el explorador de Windows) ya que no veo el archivo en el explorador de soluciones.
fuente