Hay varias preguntas sobre SO sobre el control de versiones para SQL y muchos recursos en la web, pero no puedo encontrar algo que cubra lo que intento hacer.Metodología de control de versión SQL
Primero, estoy hablando de una metodología aquí. Estoy familiarizado con las diversas aplicaciones de control de código fuente y estoy familiarizado con herramientas como SQL Compare de Red Gate, etc. y sé cómo escribir una aplicación para verificar las cosas dentro y fuera de mi sistema de control de fuente automáticamente. Si hay una herramienta que sería particularmente útil para proporcionar una metodología completamente nueva o que tiene una funcionalidad útil e inusual, entonces genial, pero para las tareas mencionadas anteriormente ya estoy configurado.
Los requisitos que estoy tratando de cumplir son: datos
- el esquema de base de datos y tabla de consulta se versionan
- secuencias de comandos DML para correcciones de datos a las tablas más grandes están versionados
- Un servidor se puede promocionar de la versión N a la versión N + X, donde X no siempre puede ser 1
- El código no está duplicado en el sistema de control de versiones; por ejemplo, si agrego una columna a una tabla, no quiero tener para asegurarse de que el cambio esté en un script de creación y un alter scr ipt
- El sistema tiene que soportar múltiples clientes que se encuentran en distintas versiones de la aplicación (tratando de llegar a todos ellos hasta dentro de 1 o 2 lanzamientos, pero no todavía)
Algunas organizaciones mantienen guiones cambio incremental en su control de versiones y para obtener de la versión N a N + 3, debería ejecutar scripts para N-> N + 1, luego N + 1-> N + 2, luego N + 2-> N + 3. Algunos de estos scripts pueden ser repetitivos (por ejemplo, se agrega una columna pero luego se modifica para cambiar el tipo de datos). Estamos tratando de evitar esa repetitividad ya que algunos de los clientes DB pueden ser muy grandes, por lo que estos cambios pueden llevar más tiempo de lo necesario.
Algunas organizaciones simplemente mantendrán un script de compilación de base de datos completo en cada nivel de versión y luego usarán una herramienta como SQL Compare para llevar una base de datos a una de esas versiones. El problema aquí es que entremezclar scripts de DML puede ser un problema. Imagine un escenario donde agrego una columna, uso una secuencia de comandos DML para llenar dicha columna, luego, en una versión posterior, se cambia el nombre de la columna.
Quizás hay alguna solución híbrida? Tal vez solo estoy pidiendo demasiado? Sin embargo, cualquier idea o sugerencia sería muy apreciada.
Si los moderadores piensan que esto sería más apropiado como wiki de la comunidad, házmelo saber.
Gracias!
No sé si vio esta, pero obtuve algunas respuestas razonables: http://stackoverflow.com/questions/2401229/database-structure-and-source-control-best-practice – Paddy
¿Esto ayuda? ? http://msmvps.com/blogs/deborahk/archive/2010/05/02/vs-2010-database-project-an-introduction.aspx Tenga en cuenta que hay más enlaces en la parte inferior del artículo. –
@Paddy - Gracias por el enlace. pdc tenía una buena solución que coincidía con una que estábamos considerando, pero las tareas de creación de guiones se subcontratan a la India (no es mi elección) y la experiencia allí es limitada, por lo que algunos de los códigos más complejos pueden ser un problema. Sin embargo, todavía está sobre la mesa por el momento. –