Saltar al contenido

Versionado de la base de datos de SQL Server

Ya no busques más por otras webs ya que llegaste al lugar justo, poseemos la solución que quieres y sin liarte.

Solución:

Martin Fowler escribió mi artículo favorito sobre el tema, http://martinfowler.com/articles/evodb.html. Elijo no poner volcados de esquema bajo el control de versiones como alumbre y otros sugieren porque quiero una manera fácil de actualizar mi base de datos de producción.

Para una aplicación web donde tendré una única instancia de base de datos de producción, utilizo dos técnicas:

Scripts de actualización de base de datos

Una secuencia de comandos de actualización de la base de datos que contiene el DDL necesario para mover el esquema de la versión N a la N+1. (Estos van en su sistema de control de versiones). Una tabla _version_history_, algo así como

create table VersionHistory (
    Version int primary key,
    UpgradeStart datetime not null,
    UpgradeEnd datetime
    );

obtiene una nueva entrada cada vez que se ejecuta un script de actualización que corresponde a la nueva versión.

Esto garantiza que sea fácil ver qué versión del esquema de la base de datos existe y que los scripts de actualización de la base de datos se ejecuten solo una vez. De nuevo, estos son no volcados de bases de datos. Más bien, cada guión representa el cambios necesario para pasar de una versión a la siguiente. Son el script que aplica a su base de datos de producción para “actualizarla”.

Sincronización de la zona de pruebas del desarrollador

  1. Un script para respaldar, desinfectar y reducir una base de datos de producción. Ejecute esto después de cada actualización a la base de datos de producción.
  2. Un script para restaurar (y modificar, si es necesario) la copia de seguridad en la estación de trabajo de un desarrollador. Cada desarrollador ejecuta este script después de cada actualización a la base de datos de producción.

Una advertencia: mis pruebas automatizadas se ejecutan en una base de datos vacía pero con un esquema correcto, por lo que este consejo no se adaptará perfectamente a sus necesidades.

El producto SQL Compare de Red Gate no solo le permite hacer comparaciones a nivel de objeto y generar scripts de cambio a partir de eso, sino que también le permite exportar los objetos de su base de datos a una jerarquía de carpetas organizada por tipo de objeto, con una [objectname]Script de creación .sql por objeto en estos directorios. La jerarquía de tipos de objetos es así:

Funciones
Seguridad
SeguridadRoles
SeguridadEsquemas
SeguridadUsuarios
Procedimientos almacenados
Mesas

Si descarga sus scripts en el mismo directorio raíz después de realizar cambios, puede usarlo para actualizar su repositorio SVN y mantener un historial de ejecución de cada objeto individualmente.

Este es uno de los “problemas difíciles” que rodean al desarrollo. Que yo sepa no hay soluciones perfectas.

Si solo necesita almacenar la estructura de la base de datos y no los datos, puede exportar la base de datos como consultas SQL. (en Enterprise Manager: haga clic con el botón derecho en la base de datos -> Generar secuencia de comandos SQL. Recomiendo configurar “crear un archivo por objeto” en la pestaña de opciones) Luego puede enviar estos archivos de texto a svn y hacer uso de las funciones de registro y diferencias de svn.

Tengo esto vinculado con un script por lotes que toma un par de parámetros y configura la base de datos. También agregué algunas consultas adicionales que ingresan datos predeterminados como los tipos de usuario y el usuario administrador. (Si desea más información sobre esto, publique algo y puedo poner el guión en algún lugar accesible)

Si también necesita conservar todos los datos, le recomiendo mantener una copia de seguridad de la base de datos y utilizar los productos Redgate (http://www.red-gate.com/) para realizar las comparaciones. No son baratos, pero valen cada centavo.

Aquí puedes ver las reseñas y valoraciones de los usuarios

Agradecemos que quieras añadir valor a nuestra información tributando tu experiencia en las ilustraciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *