visual toolbelt team studio source management full databases control sql version-control

toolbelt - La mejor manera de control de versiones T-SQL?



tfs sql server (8)

Los artículos de K Scott Allen lo dicen todo: http://odetocode.com/Blogs/scott/archive/2008/01/31/11710.aspx

Posible duplicado:
Procedimientos almacenados / esquema DB en control de fuente

¿Cuál es la mejor manera de controlar la versión de mis tablas, vistas, sprocs, etc.? Preferiblemente automatizado o al menos semiautomatizado :)

Gracias


Escriba scripts de migración para todos los cambios de db y guárdelos en un repositorio. Haga cumplir una política de realizar todos los cambios en el db solo ejecutando un script; de esa manera hay un registro de lo que se ha hecho y una forma de revertirlo. Investigue si hay un marco de migraciones disponible para su combinación de idioma / db favorita.


Si fuera demasiado perezoso podría usar SMO (objetos de administración de SQL Server) o si usa SQL Server antes de 2005 el DMO (objetos de gestión distribuidos) para crear secuencias de comandos todas las tablas / vistas / procedimientos almacenados diariamente y luego comparar el guión con el guión en el control de fuente y si hay algún cambio, compruebe la nueva versión. No podrá necesariamente tener una secuencia de comandos tan bonita como si acabara de crear todos los cambios de DB en scripts, pero al menos puede volver a crear todas las tablas / almacenadas procedimientos / vistas. Por ejemplo, en mis scripts de creación de tablas a menudo hay comentarios.

Aquí hay un artículo para que comiences con el scripting: http://www.sqlteam.com/article/scripting-database-objects-using-smo-updated .

De nuevo, esto es principalmente si eres demasiado perezoso para molestarte con el control de versiones y no te ayudará si cambias algo dos veces en un día. Además, todos los scripts de migración de datos deben guardarse y registrarse porque no recogerá SQL ad hoc, solo objetos de base de datos.


Utilizo Visual Studio 2008 Pro para crear proyectos de Base de datos (Otros tipos de proyectos -> Base de datos). Ya usamos SVN como un repositorio de código, por lo que un proyecto con un grupo de archivos .sql que representa sus procedimientos almacenados es simplemente otra cosa para poner en el repositorio: puede ver diffs / historial, etc. Esto funciona igual con VSS o cualquier otro repositorio que usas

Lo bueno de los proyectos de la Base de datos es que su proyecto recordará su cadena de conexión, y todo lo que tiene que hacer es hacer clic derecho en un archivo .sql (¡o seleccionarlos todos a la vez!) Y seleccionar ejecutar para actualizarlo en la base de datos. Esto hace que sea fácil actualizar sus archivos .sql desde el repositorio y ejecutarlos todos para actualizar todos sus procedimientos almacenados, verificando que su base de datos se actualice en segundos.

También puede seleccionar crear un proyecto LINQ (Visual C # -> Base de datos) y almacenar todo su código LINQ en su repositorio.

¡Espero que ayude!


He escrito un disparador DDL que registra todos los cambios realizados en la definición de objetos SQL (disparadores, tablas, SP, vista, etc.). Podría invocar SP extendido desde el desencadenante y almacenar los detalles en otra Base de datos y usar eso como repositorio. Pero si tu equipo es realmente disciplinado, cualquier control de fuente debería ser el truco. El desencadenante se usa como mecanismo de auditoría y es ideal para los equipos que están geográficamente dispersos.


Pruebe Randolph , una de las mejores herramientas de control de versiones SQL que conozco.


Estoy usando la edición Visual Studio Database, que puede exportar el esquema de SQL Server a un proyecto de Visual Studio. Esto se almacena en Source Control y se puede implementar donde sea necesario. El proyecto VS Database es solo un conjunto de scripts y es una forma de trabajo torpe.

Un método más sólido sería usar un marco de migración de base de datos y, si está trabajando con .Net, consulte esta publicación en el blog para obtener una buena descripción http://flux88.com/NETDatabaseMigrationToolRoundup.aspx .

Actualizar

Como se mencionó en los comentarios, esta página ya no existe. Así que aquí está la última instantánea conocida de la máquina de retorno http://web.archive.org/web/20080828232742/http://flux88.com/NETDatabaseMigrationToolRoundup.aspx