Creo que tiene para cada versión de su software un montón de actualizaciones de bases de datos. ¿Por qué no escribe estas actualizaciones como una instrucción T-SQL, para ser probado, ejecutado cuando se lanza por primera vez la nueva versión de su software? Simplemente abra la conexión a su base de datos desde su software y envíe las instrucciones DDL como lo haría con cualquier instrucción SELECT o UPDATE. También haría algo similar a lo que propone Jack Paulsen: mantener una lista de estas instrucciones T-SQL con un doble sistema de identificación: una vinculada a la base de datos/versión de software a la que se aplica (puede ser uniqueIdentifier), otra (número) a mantener las instrucciones en un orden serial (véase mi ejemplo: la instrucción 2 no puede ser ejecutada antes de la instrucción 1)
ejemplo:
//instruction 1, batch instructions for version#2.162
USE myDatabase
GO
ALTER TABLE myTable
ADD myColumn uniqueIdentifier Null
GO
//instruction 2, batch instructions for version#2.162
USE myDatabase
ALTER TABLE myTable
ADD CONSTRAINT myTable_myColumn FOREIGN KEY (myColumn) ...
GO
Para una descripción completa de ALTER, DROP y CREATE instrucciones, consulte la T- Ayuda de SQL Solo tenga cuidado suficiente para (por ejemplo) borrar Índices y Restricciones vinculados a un campo antes de eliminar ese campo.
Puede añadir, por supuesto, algunas instrucciones de actualización adicionales para calcular los valores de las columnas añadidas, etc.
Incluso se puede pensar en algo más complicado, comprobando si los pasos anteriores de mejora (que llevaron a la versión de base de datos # 2.161) fueron ejecutados correctamente.
Mi consejo: mientras escribe estas instrucciones de T-SQL, mantenga también el rastro de sus "homólogos", para que pueda en cualquier momento (tiempo de depuración por ejemplo) degradar la estructura de su base de datos a la versión anterior.
Puerta Roja tiene algunas herramientas para trabajar con SQL Server ... Yo recomendaría la comprobación hacia fuera. – mattruma
Cuesta dinero. – Shimmy