Sí. Debería poder reconstruir cualquier parte de su sistema desde el control de la fuente, incluida la base de datos (y también argumentaría ciertos datos estáticos).
Suponiendo que no quieres tener una herramienta para hacerlo, te sugiero que quieras incluir lo siguiente:
- Scripts de creación para las estructuras de tablas básicas, incluidos esquemas, usuarios, tablas, claves, valores predeterminados, etc.
- Actualice los scripts (ya sea modificando la estructura de la tabla o migrando datos de un esquema anterior al nuevo)
- Scripts de creación para procedimientos almacenados, índices, vistas, activadores (no necesita preocuparse por la actualización de estos, ya que solo sobrescribe lo que había con el script de creación correcto)
- Scripts de creación de datos para que el sistema se ejecute (un solo usuario, cualquier dato de lista de selección estática, ese tipo de cosas)
Todos los scripts deben incluir las declaraciones de eliminación apropiadas y deben escribirse para que puedan ejecutarse como cualquier usuario (por lo tanto, incluir los prefijos de esquema / propietario asociados, si es relevante).
El proceso para actualizar / etiquetar / ramificar debe ser exactamente como el resto del código fuente. No tiene mucho sentido hacerlo si no puede asociar una versión de la base de datos con una versión de la aplicación.
Por cierto, cuando dices que la gente solo puede actualizar el servidor de prueba, espero que te refieras al servidor de desarrollo. Si los desarrolladores están actualizando el servidor de prueba sobre la marcha, entonces estás viendo un mundo de dificultades cuando se trata de resolver lo que necesitas liberar.