sql server - tools - SSDT creando un script de implementación de reversión?
script para crear base de datos sql server (2)
podemos crear una secuencia de comandos de despliegue SQLServer con TFS y SSDT, pero ¿hay alguna forma de crear una secuencia de comandos retrotraída, para que podamos revertir la implementación? Gracias
Como SSDT (y productos similares) funcionan al comparar el esquema en el proyecto con una base de datos en vivo para sincronizar la base de datos con el modelo, no hay una forma directa de crear un script de reversión. También hay consideraciones con respecto a los datos modificados / agregados / eliminados a través de scripts previos o posteriores a la implementación.
Dicho esto, hay un puñado de opciones.
- Tome una instantánea cada vez que haga un lanzamiento. Puede usar esa instantánea de la versión anterior para hacer otra comparación para fines de reversión.
- Mantenga una versión anterior en otro lugar; quizás haga un esquema de comparación de su sistema de producción con su máquina local. Puede usar eso para comparar con producción y hacer una reversión.
- Genere un dacpac del sistema existente antes del lanzamiento (use SQLPackage o SSDT para hacer eso). Puede usar eso para implementar esa versión del esquema en la base de datos si algo sale mal.
- Tome una instantánea de la base de datos antes del lanzamiento. En el mejor de los casos, no lo necesita y puede soltar la instantánea. En el peor de los casos, podrías usar eso para revertir. Por supuesto, debes tener cuidado con el espacio y el IO, ya que mantendrás ese estado original en otro lugar.
- Ejecute sus cambios a través de varios entornos para minimizar la necesidad de una reversión. Idealmente, si ha ejecutado esto a través de entornos de Desarrollo, QA y Estadificación / Aceptación del usuario, su código y lanzamientos deberían ser lo suficientemente sólidos como para poder lanzarlos sin ningún problema.
Deberá codificar en consecuencia para revertir los cambios en los datos. Eso podría ser un poco más complicado ya que cada escenario es diferente. Deberá asegurarse de escribir un script que pueda deshacer los cambios que fueron parte de su lanzamiento. Si insertó una fila, necesitará una secuencia de comandos de restauración para eliminarla. Si actualizaste un montón de datos, necesitarás una copia de seguridad de esos datos o de alguna otra manera para recuperarlos.
Antes de realizar cualquier cambio en un proyecto de base de datos, tomo una instantánea (un dacpac) con la que puedo comparar el proyecto de base de datos modificado para generar un script de lanzamiento. Aunque es bastante fácil intercambiar el origen y el objetivo para hacer una comparación de esquema inverso, descubrí que no me permitirá generar un script de actualización (que sería el script de reversión) de la comparación inversa, presumiblemente porque el destino es una base de datos proyecto.
Para evitar ese problema y generar un script de reversión, hago lo siguiente:
Implementar el proyecto de base de datos modificado en mi base de datos de desarrollo (localdb);
Consulte una versión anterior del proyecto de base de datos desde el control de origen, desde antes de que se realizaran los cambios;
Ejecute una comparación de esquema de la versión anterior del proyecto de base de datos a la base de datos de desarrollo (localdb);
Use el esquema de comparación para generar un script de actualización. Esta secuencia de comandos de actualización será una secuencia de comandos de restauración.
Aunque sería bueno poder generar un script de reversión más directamente, el proceso de cuatro pasos anterior lleva menos de cinco minutos.