SQL Source Control se conecta a SSMS y conecta sus bases de datos a su sistema de control de versiones, lo que le permite controlar la versión de sus esquemas de base de datos, y luego desplegarlos utilizando el motor de comparación de confianza de Redgate, SQL Compare.

La última versión (¡enviada esta semana!) cuenta con una versión mejorada de los scripts de migración, que le permiten escribir su propio SQL para anular el script de despliegue generado por SQL Compare, haciendo posible que sus compañeros de equipo obtengan los últimos cambios del control de origen sin el riesgo de perder datos. Puedes aprender más sobre lo que hemos hecho, y por qué, en otro reciente blogpost mío.

Pero aquí, quería hablarte de cómo funciona usando un escenario común.

Cómo evitar la pérdida de datos al cambiar el nombre de una tabla

Las tareas comunes que podrían verse afectadas incluyen la división o fusión de columnas y tablas, la adición de una restricción NOT NULL a una columna, el cambio del tipo de datos o el tamaño de una columna y el cambio de nombre de una tabla.

En el caso de cambiar el nombre de una tabla en su base de datos de desarrollo, SQL Source Control interpretaría este cambio como un DROP y CREATE. Si otro miembro de su equipo utiliza la pestaña Get latest para obtener estos cambios, los datos de la tabla de destino se pierden.

Para evitar esta pérdida de datos, puede escribir un script de migración para cambiar el nombre de la tabla utilizando el procedimiento almacenado sp_rename. Este script sustituye las sentencias DROP y CREATE que el motor de comparación de SQL generaría de otro modo para este cambio.

Una vez que haya cambiado el nombre de su tabla (en este caso de usuarios a clientes), el siguiente paso sería confirmar los cambios en su sistema de control de origen utilizando la pestaña Confirmar cambios en SQL Source Control. SQL Source Control le advertirá de que puede producirse una pérdida de datos al confirmar el cambio y le sugerirá que escriba un script de migración.

En la pestaña Migraciones y en Reemplazar cambios de esquema no comprometidos, utilizaría entonces las casillas de verificación para seleccionar los cambios de esquema relevantes.

En este ejemplo estás reemplazando cambios de esquema no comprometidos porque ya has renombrado la tabla, pero aún no la has confirmado. El cambio de nombre es interpretado en realidad por SQL Compare como un DROP y un CREATE y el script de migración reemplazará esos cambios en el script de despliegue (la otra opción sería empezar con un script en blanco, lo que haría si ya hubiera preparado su esquema para la migración y hubiera consignado esos cambios).

Al hacer clic en Generar script, SQL Source Control genera un script de migración basado en los cambios no comprometidos y entonces puede reemplazar las sentencias DROP y CREATE generadas automáticamente.

En este caso utilizaríamos el siguiente SQL:

EXEC sp_rename 'dbo.users', 'customers'GO CREATE SYNONYM dbo.users FOR customersGO

El sinónimo de la tabla de clientes aquí evitará problemas cuando se haga referencia a la tabla utilizando el nombre antiguo.

Entonces puedes Guardar y cerrar y este script de migración ahora reemplaza los cambios realizados.

De vuelta en la pestaña de Commit verás el script de migración con los cambios de esquema asociados anidados debajo. Entonces todo lo que necesita hacer es seleccionar el nuevo script de migración, introducir un comentario y confirmar los cambios.

Ahora está listo para desplegar los cambios. Si utiliza SQL Compare, el script de migración se ejecuta automáticamente durante el despliegue, utilizando el procedimiento almacenado sp_rename en lugar de las sentencias DROP y CREATE generadas originalmente por el motor de SQL Compare.

¿Cómo puedo utilizar los scripts de migración en SQL Source Control?

.

Deja una respuesta

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