Controle las versiones de la base de datos utilizando la gestión del código fuente para SQL Server

Hay muchas soluciones de bases de datos con control de versiones. Vamos a considerar uno de ellos, a saber, Source Control, que se incluye en el paquete SQL Tools. Como ejemplo usaremos JobEmplDB base de datos para el servicio de selección:

Hemos revisado los conceptos básicos del diseño de bases de datos en Conceptos básicos del diseño de bases de datos SQL con un ejemplo.

Índice

    Descripción general de las opciones del menú de control de fuente

    Ahora veremos las opciones disponibles en el menú contextual de Control de fuente:

    Los parámetros principales del menú Control de fuente incluyen los siguientes comandos:

    1. Mostrar administrador de control de código fuente mostrar la ventana de cambio local.
    2. Cometer muestra la ventana de fijación.
    3. Obtén lo ultimo mostrando los cambios recientes en el repositorio remoto (de hecho, esto precede al procedimiento de extracción).
    4. Ver historial de cambios muestra el historial de cambios en la base de datos.
    5. Vincular/Desvincular datos estáticos que puede vincular y controlar versiones de datos tabulares estáticos (referencias, referencias reglamentarias, listados, etc.). Hay más información disponible en Vincular datos estáticos, y se proporcionan ejemplos procesados ​​en Datos estáticos de control de versiones: Conflictos.
    6. Desconectar la base de datos del control de código fuente que puede desvincular la base de datos local actual del repositorio de control de código fuente.

    Conectar la base de datos a la fuente de control

    Para comenzar, conecte la base de datos al repositorio de control de código fuente.

    Para hacer esto, haga clic derecho en la base de datos deseada, coloque el cursor sobre Fuente de controly luego presione Asociar la base de datos con Source Control en el menú contextual.

    У Asociar la base de datos con Source Control ventana que se abre, vaya a Repositorio de control de código fuente cuadro y haga clic en el icono más:

    У Propiedades del repositorio de control de código fuente ventana, seleccione el sistema de gestión de origen requerido:

    Nota: La herramienta de control de código fuente admite varios tipos de sistemas de control de código fuente, incluidos Working Folder, Git, SVN y Mercurial.

    En nuestro ejemplo, seleccionamos Git e ingresamos los detalles requeridos:

    Aquí debemos llenar los siguientes campos:

    1 en Repositorio carpeta es la ruta al almacenamiento local en su PC. Por lo tanto, primero debe clonar el repositorio de Git. Por ejemplo, GitHub te permite clonar un enlace: haces clic Clon al repositorio requerido y copie el enlace provisto allí:

    2. Un nombre del repositorio este es el nombre del repositorio local.

    Después de completar los campos obligatorios, haga clic en Prueba y asegúrese de que la conexión se haya establecido correctamente:

    Luego haga clic en Aceptar y luego haga clic en Aceptar nuevamente.

    Ahora seleccione la fuente creada y haga clic en bien:

    Para obtener más información sobre cómo conectarse a Git, consulte Vincular una base de datos a Git.

    Luego seleccione el modelo de desarrollo de la base de datos y haga clic en Enlace:

    Hay dos modelos de desarrollo de bases de datos:

    1. Dedicado es un modelo en el que cada desarrollador trabaja en su propia copia de la definición de la base de datos.
    2. Común este es un modelo en el que todos los desarrolladores trabajan en la misma copia de la definición de la base de datos.

    En nuestro caso, elegimos un modelo de desarrollo de base de datos común por simplicidad. Sin embargo, en proyectos a menudo necesitamos un modelo especial.

    Hacer cambios en el repositorio

    Agregar cambios al repositorio

    Después de ajustar todas las configuraciones, presione Enlace y espere a que se complete el proceso de conexión:

    Aparecerá una ventana que muestra una tabla con las siguientes columnas:

    1. Casilla de verificación para incluir el objeto en la fijación
    2. Cambio escribe
    3. Tipo de objeto
    4. Nombre del objeto
    5. esquema del objeto

    Mira el panel inferior. A la izquierda, muestra una descripción del objeto en el repositorio local (el cambio que queremos entregar al confirmar) y una descripción del objeto en el repositorio del código fuente (lo que queremos actualizar).

    Nota: la definición del objeto está a la izquierda pero falta a la derecha. Esto significa que el objeto aún no existe en el repositorio. Tenemos la intención de agregar este objeto al repositorio de control de versiones.

    A continuación, seleccione todos los objetos y agréguelos al arreglo. Luego escribe un comentario allí y haz clic en Cometer.

    Si la solución es exitosa, verá la siguiente ventana al final del proceso. Luego haga clic bien.

    Vaya al repositorio de GitHub para asegurarse de que se hayan creado todos los archivos necesarios:

    Como puede ver, las definiciones de objetos en el repositorio están agrupadas por tipo:

    1 en programabilidad la carpeta contiene las definiciones de objetos de usuario correspondientes, agrupadas por funciones y procedimientos almacenados.

    2. en Seguridad / Esquemas la carpeta contiene las definiciones del esquema:

    3 en Mesas La carpeta contiene todas las definiciones de tablas de usuario con sus índices y restricciones, así como claves primarias y externas:

    4. en Puntos de vista La carpeta contiene las definiciones de todas las vistas:

    Quitar objetos del almacenamiento

    Para eliminar todos los objetos innecesarios, use el siguiente script:

    USE [JobEmplDB]
    GO
    
    DROP VIEW [test].[GetNewID];
    GO
    
    DROP VIEW [test].[GetRand];
    GO
    
    DROP VIEW [test].[GetRandVarBinary16];
    GO
    
    DROP FUNCTION [test].[GetListSymbols];
    GO
    
    DROP FUNCTION [test].[GetSelectSymbols];
    GO
    
    DROP FUNCTION [test].[GetRandString];
    GO
    
    DROP FUNCTION [test].[GetRandString2];
    GO
    
    DROP FUNCTION [test].[GetRandVarbinary];
    GO

    Luego registre todos los cambios. Para hacer esto, haga clic derecho en la base de datos deseada, coloque el cursor sobre fuente de control, y luego presione Mostrar administrador de control de código fuente o Fuente de control desde el menú contextual:

    A continuación, la herramienta muestra Actualizar ventana y luego abre una ventana con una tabla de cambios:

    Echa un vistazo al panel inferior. Falta la definición del objeto a la izquierda, pero sí a la derecha. Esto significa que vamos a eliminar el objeto del repositorio.

    Seleccione todos los cambios, agregue un comentario y haga clic en Cometer. Luego, en la nueva ventana, haga clic en bien:

    Cuando pasamos a ver la base de datos en el repositorio de GitHub, vemos que solo queda una vista requerida:

    Cambiar objetos en el almacenamiento

    Cambiemos La empresa tabla agregando Eliminado columna al arte La empresa mesa:

    ALTER TABLE [dbo].[Company]
    ADD [IsDeleted] BIT NOT NULL DEFAULT(0);

    Mirar La empresa definiendo una tabla en el repositorio en GitHub:

    Como puede ver, el repositorio de control de fuente no incluye un archivo Eliminado columna en la definición de [dbo].[Company] mesa hasta ahora.

    Para continuar, registre los cambios como antes. Para hacer esto, abra el archivo Fuente de control ventana:

    Cuando la ventana ya esté abierta, haga clic en Actualizar:

    Después de actualizar los datos sobre el estado de nuestro repositorio local, obtenemos nuevamente la tabla de preparación de la fijación:

    Mira el panel inferior. La definición del objeto está presente tanto a la derecha como a la izquierda. Así, está presente tanto en el repositorio de control de versiones como en nuestro repositorio local. Así que cambiamos la definición del objeto.

    Seleccione todos los cambios, agregue un comentario para describirlos y haga clic en Cometer. Luego, en la nueva ventana, haga clic en bien.

    Ahora ve a la página que contiene La empresa definiendo una tabla en el repositorio de GitHub:

    Podemos ver uno nuevo Eliminado columna añadida a [dbo].[Company] definición de tabla.

    Cancelar cambios

    Ahora borra el creado previamente Eliminado columna del pueblo La empresa tabla usando el siguiente escenario:

    ALTER TABLE [dbo].[Company] DROP CONSTRAINT [DF__Company__IsDelet__01142BA1];
    GO
    
    ALTER TABLE [dbo].[Company]
    DROP COLUMN [IsDeleted];

    Importante: Necesita encontrar el nombre de restricción DF correcto para Eliminado columna.

    abrir de nuevo Fuente de control ventana:

    A continuación vemos las diferencias en La empresa definiendo una tabla entre nuestro repositorio local y el repositorio remoto.

    Seleccione todos los cambios y haga clic en Cancelar. Por lo tanto, deshacemos todos los cambios seleccionados. Luego, en la nueva ventana que aparece, haga clic en .

    Cuando la operación de reversión se complete con éxito, aparecerá una nueva ventana. Hacer clic bien.

    SSMS muestra que Eliminado la columna vuelve a La empresa mesa:

    Ver historial de cambios

    Podemos ver el historial de cambios en la base de datos.

    Para ver el historial de cambios, haga clic con el botón derecho en la base de datos, desplace el cursor sobre fuente de control, y luego presione Ver historial de cambios en el menú contextual:

    Aparecerá la ventana del historial de cambios de la base de datos. En la esquina superior izquierda de la ventana, vea el registro de cambios con las siguientes columnas:

    1. Revisión
    2. Fecha
    3. Autor
    4. Comentario

    En la esquina superior derecha de la ventana, vea el comentario del cambio en sí, el tipo específico de operación y la ruta completa al archivo modificado.

    Las diferencias se muestran en la parte inferior de la ventana: a la izquierda vemos el estado anterior y a la derecha, el actual.

    Ingeniería inversa de una base de datos utilizando una herramienta de control de código fuente

    Vamos a crear un espacio en blanco TrabajoVacíoVacío base de datos:

    Haga clic con el botón derecho en la base de datos que creó y apúntela fuente de control, y seleccione Asociar la base de datos con Source Control:

    У Vincular bases de datos a fuentes de control en la ventana que se abre, ajuste la configuración requerida y haga clic en Enlace:

    NotaR: Para la ingeniería inversa, debe elegir Dedicado modelo.

    Aparecerá una ventana mostrando las diferencias entre los repositorios local y remoto:

    Necesitamos asegurarnos de que TrabajoVacíoVacío la base de datos está realmente vacía:

    Ahora de vuelta a Fuente de control ventana, seleccione todos los cambios y luego haga clic en Cancelar:

    Después de eso, aparecerá una nueva ventana que le pedirá que confirme la reversión de los cambios locales. Para confirmar, haga clic en bien.

    En la ventana con el mensaje sobre la reversión exitosa de los cambios locales, haga clic en bien.

    Ahora nuevo TrabajoVacíoVacío la definición de la base de datos es exactamente la misma que la definición de la base de datos del repositorio de control de código fuente en GitHub:

    Así que hicimos ingeniería inversa. Usamos una base de datos vacía y la restauramos a su definición de base de datos desde el repositorio de control de código fuente. Del mismo modo, podemos conectar cualquier base de datos a una fuente de control y ver las diferencias:

    Para fines de demostración, revise los cambios de definición para bases de datos completamente diferentes:

    Actualizar tabla desde el repositorio

    ¿Y si actualizamos la tabla desde el repositorio? ¿Quieres borrar los datos de la tabla? Vamos a revisar.

    Crear un JobEmpplDB2 base de datos - copia JobEmplDButilizando JobEmplDB copia de seguridad de la base de datos. Después y JobEmpplDB2 base de datos, ejecute el siguiente fragmento de código:

    ALTER TABLE [dbo].[Company] DROP CONSTRAINT [DF__Company__IsDelet__01142BA1];
    GO
    
    ALTER TABLE [dbo].[Company]
    DROP COLUMN [IsDeleted];
    
    ALTER TABLE [dbo].[Company]
    ADD [Source] NVARCHAR(255);

    Después de ejecutar este script, eliminamos el archivo. Eliminado columna y agregamos Fuente columna al arte La empresa mesa.

    Ahora, el enlace JobEmplDB2 base de datos al repositorio que creamos anteriormente.

    Botón derecho del ratón JobEmplDB2 base de datos, apunta a fuente de control, y luego presione Asociar la base de datos con Source Control en el menú contextual:

    У Asociar la base de datos con Source Control ventana, configure los ajustes necesarios y haga clic en Enlace:

    En la ventana que se abre, seleccione los cambios en la tabla Empresa y haga clic en Cancelar:

    Cuando aparezca una advertencia, presione bien para deshacer los cambios locales que seleccionamos (aquellos que no coinciden con los repositorios de control originales):

    Al final del proceso de reversión, haga clic en bien en una nueva ventana:

    Entonces sincronizamos La empresa definiendo una tabla con un repositorio de código fuente en GitHub:

    Para asegurarse de que los datos no se hayan eliminado, use una simple consulta SELECT:

    Resulta que la fuente de control en SQL Tools actualiza la definición de la base de datos gradualmente, sin reproducir las tablas modificadas. De esta forma, proporciona ingeniería inversa segura de una base de datos no vacía.

    Conclusión

    En resumen, mostramos cómo usar dbForge Source Control para SQL Server para controlar la versión y aplicar ingeniería inversa a las bases de datos de SQL Server.

    Descargue una versión de prueba gratuita de 30 días del kit de herramientas dbForge SQL, que incluye dbForge Source Control para SQL Server, para evaluar las características y capacidades que lo ayudarán a realizar tareas de SQL Server de manera fácil y eficiente.

    Artículos similares

    Artículos de interés

    Subir