sql - tabla - Control de fuente y procedimientos almacenados
procedimientos almacenados mysql (5)
Esta pregunta ya tiene una respuesta aquí:
Me he estado preguntando cómo poner todos los procedimientos almacenados en un SQL 2000 bajo control de fuente.
Estamos utilizando Subversion para todo nuestro código fuente normal, por lo que sería genial si hubiera una solución al problema utilizando Subversion.
¿Tienes alguna idea?
Actualización 16-02-2009: Esta es la secuencia de comandos vbs que utilicé para exportar todos los procedimientos almacenados:
Set con = CreateObject("ADODB.Connection")
con.ConnectionString = "*** Database connection string here ***"
con.Open
Set rs = CreateObject("ADODB.RecordSet")
rs.ActiveConnection = con
strSQL = "SELECT ROUTINE_NAME, ROUTINE_DEFINITION " & _
"FROM INFORMATION_SCHEMA.routines " & _
"WHERE ROUTINE_NAME NOT LIKE ''dt_%'' " & _
"ORDER BY 1"
Set fso = CreateObject("Scripting.FileSystemObject")
rs.Open strSQL
While Not rs.Eof
filename = rs("ROUTINE_NAME") & ".sql"
routineSQL = rs("ROUTINE_DEFINITION")
Set tf = fso.CreateTextFile(filename, True)
tf.Write routineSQL
tf.Close
set tf = Nothing
rs.MoveNext
Wend
Set fso = Nothing
rs.Close
Set rs = Nothing
Escriba todos los procedimientos almacenados en una carpeta. Un archivo por procedimiento almacenado.
Luego, simplemente ponga esa carpeta llena de archivos bajo control de fuente, exactamente como lo haría con su otro código fuente.
También ayuda si hay un archivo por lotes o similar para anexar estos procedimientos almacenados, esta será su secuencia de comandos "actualización de la base de datos a la última versión".
Hay formas de administrar los procedimientos almacenados dentro de la base de datos, pero he encontrado que este es el método más simple.
Por lo general, realiza un seguimiento de los cambios en las secuencias de comandos SQL en el control de código fuente. Por ejemplo, tiene un checkin para su esquema base para su base de datos. Luego sigues agregando nuevos archivos SQL para cambios en tu esquema. De esta forma puede implementar una versión exacta para fines de prueba. Luego puede usar la automatización de compilación para probar automáticamente algunas de sus secuencias de comandos al ejecutarlas en bases de datos de prueba con datos reales en ellas.
Hay muchas herramientas de diferencia de base de datos que pueden ayudarlo a resolver lo que ha cambiado entre versiones.
Como han dicho otras personas, comience con cada proceso almacenado en un archivo de texto separado que esté bajo control de fuente. Escriba un script que elimine todos los procedimientos almacenados y luego los vuelva a crear a partir de los archivos de texto (mientras registra / informa cualquier error): este script debe ser fácil de ejecutar. Luego, cada vez que actualice desde el control de origen, vuelva a ejecutar el script. Todas las ediciones de los procedimientos almacenados deben realizarse en el archivo de texto, no en la copia "en vivo" en su base de datos local; de lo contrario, perderá los cambios cuando realice una actualización.
Pronto querrá auditar el esquema de su base de datos y crear scripts de actualización, etc.
Si solo está utilizando SQL Server, considere SQL Compare from Reg-Gate . Creo que comparará procs almacenados (y otros sql) en un archivo de texto con lo que está en su base de datos y sincronizará los dos. De modo que le permite usar las herramientas de edición en SqlServer para editar los procedimientos almacenados en vivo.
(A partir de finales de 2009, Red-Gate está a punto de enviar Sql Compare para Oracle )
Me han dicho que la herramienta Diff de ApexSQL es otra opción en lugar de Sql Compare, las reclamaciones Edit de ApexSQL proporcionan integración de control de código fuente.
En la gama alta considere la Edición de la Base de Datos del Sistema de Equipo de Visual Studio, sin embargo, cuesta mucho, entonces es posible que tenga que pagar aún más por el soporte de Oracle de un tercero. Pero si usted es un socio de Microsoft (o puede convertirse en uno), puede obtener algunos acuerdos de forma muy económica.
Consulte también ¿Controla la fuente sus bases de datos? en para un buen conjunto de respuestas sobre el problema más grande.
Consulte la solución de Josef aquí: ¿Cuál es la mejor manera de controlar la versión de los procedimientos almacenados de mi servidor SQL?
Él tiene una herramienta para automatizar la creación de los archivos de script, que luego pueden registrarse en SVN (o en cualquier otro repositorio, en realidad).