Tutorial: Almacenamiento del esquema de la base de datos en Git

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de datos SQL en Microsoft Fabric

El almacenamiento del esquema de base de datos en Git proporciona varias ventajas, como el control de versiones, la colaboración y la capacidad de realizar un seguimiento de los cambios a lo largo del tiempo. Este enfoque es especialmente útil para el desarrollo de código primero en el que se define el esquema de la base de datos a través del código y se aplican cambios directamente a un entorno de desarrollo mediante un agente orm o de codificación como GitHub Copilot.

En este tutorial, aprenderá a almacenar el esquema de base de datos en Git y a administrarlo como parte del flujo de trabajo de desarrollo.

  • Creación de un nuevo proyecto de SQL a partir de una base de datos existente
  • Confirmación e inserción del código de base de datos en un repositorio remoto de Git
  • Aplicar cambios de la base de datos al código existente
  • Extraiga los cambios del repositorio remoto de Git y aplíquelos a la base de datos local (opcional)

Diagrama que muestra el flujo de información del tutorial.

Cuando termine, estará listo para realizar un seguimiento de la base de datos en el control de código fuente y colaborar con el equipo en los cambios de la base de datos a través de un repositorio de Git.

Nota:

Para completar el tutorial, necesita acceso a una base de datos SQL. Puedes desarrollar localmente de forma gratuita utilizando la edición para desarrolladores de SQL Server en Windows o en contenedores.

Prerequisites

Warning

Este tutorial no está disponible para los proyectos de estilo SDK (versión preliminar) en Visual Studio 2022. Use SQL Server Management Studio (SSMS) o Visual Studio Code en su lugar.

# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage

# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates

Paso 1: Crear un nuevo proyecto de SQL a partir de una base de datos existente

Para representar la base de datos en el control de código fuente, use el formato del proyecto de base de datos SQL . El proyecto incluye archivos .sql para cada objeto de la base de datos y un .sqlproj con la configuración de la base de datos. Al ver el proyecto en el explorador de archivos y el control de código fuente, la estructura de un proyecto de SQL refleja la exploración de la base de datos en el Explorador de objetos.

En el SQL Server Explorador de objetos en Visual Studio, haga clic con el botón derecho en la base de datos desde la que desea crear un project y seleccione Crear nuevo Project... .

Captura de pantalla del cuadro de diálogo Importar base de datos en Visual Studio.

En el cuadro de diálogo Crear nuevo Proyecto, escriba un nombre de proyecto. El nombre del proyecto no necesita coincidir con un nombre de base de datos. Compruebe y modifique la ubicación del proyecto según sea necesario. La configuración de importación predeterminada importa los objetos en carpetas por esquema y, a continuación, el tipo de objeto. Puede modificar la configuración de importación para cambiar la estructura de carpetas o para incluir permisos en los objetos que se importan. Inicie la importación.

El cuadro de diálogo Importar base de datos muestra el progreso de la importación en forma de mensajes. Cuando finalice la importación, puede ver los objetos importados en el Explorador de soluciones. El proceso almacena los registros en un archivo del directorio del proyecto en Import Schema Logs. Selecciona Finalizar.

Warning

Este tutorial no está disponible para los proyectos de estilo SDK (versión preliminar) en Visual Studio 2022. Use SQL Server Management Studio (SSMS) o Visual Studio Code en su lugar.

En la vista explorador de objetos de base de datos de Visual Studio Code, seleccione una base de datos desde la que desea crear un proyecto. Haga clic con el botón derecho en la base de datos y seleccione Crear Project en Base de datos.

Captura de pantalla del cuadro de diálogo Crear proyecto desde base de datos en Visual Studio Code.

En Visual Studio Code, el cuadro de diálogo Crear proyecto a partir de la base de datos requiere el nombre y la ubicación del proyecto. La configuración de importación predeterminada importa los objetos en carpetas por esquema y, a continuación, el tipo de objeto. Puede seleccionar una estructura de carpetas diferente o elegir incluir permisos en los objetos que se importan antes de seleccionar Crear.

Abra la vista Proyectos de base de datos para ver el nuevo proyecto y las definiciones de objetos importados.

En el Explorador de objetos de SQL Server Management Studio, haga clic con el botón derecho en la base de datos desde la que desea crear un project y seleccione Crear Project desde base de datos... en el menú Tareas.

Captura de pantalla del cuadro de diálogo

En el cuadro de diálogo Crear SQL Project a partir de la base de datos, compruebe la base de datos seleccionada y modifique el nombre y la ubicación de project según sea necesario. El nuevo proyecto se crea con los objetos de la base de datos seleccionada y se organiza en carpetas por esquema y, a continuación, el tipo de objeto.

Se crea automáticamente un archivo de solución en la carpeta situada encima de la carpeta del proyecto y se abre en el Explorador de soluciones después de la creación. Si desea agregar el nuevo proyecto a una solución existente, seleccione Agregar a la solución y vaya al archivo de solución. Seleccione Crear para crear el proyecto.

Use la CLI de SqlPackage para extraer el esquema de una base de datos existente en un proyecto de SQL. El siguiente comando SqlPackage extrae el esquema de una base de datos en un proyecto sql completo. Los .sql archivos se organizan mediante carpetas de tipo de objeto y esquema anidado y se crea un .sqlproj archivo para administrar el proyecto con propiedades establecidas que coincidan con las opciones de la base de datos.

sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SqlProject

Paso 2: Confirmar e insertar el código de base de datos en un repositorio remoto de Git

Después de crear el proyecto SQL, inicie la escala de tiempo de Git para la base de datos en un repositorio de Git local.

Con el proyecto SQL abierto en Visual Studio, cree un repositorio git local e insértelo en un remoto.

  1. Seleccione Git>Create Git Repository (Crear repositorio de Git) en la barra de menús.

  2. En el cuadro de diálogo Crear un repositorio de Git, en la sección Enviar a un nuevo repositorio remoto, elija entre GitHub y Azure DevOps. Si decides enviar el código a GitHub, inicia sesión en tu cuenta de GitHub cuando se te solicite. Si elige Azure DevOps, inicie sesión en la cuenta de Azure DevOps y seleccione o cree un proyecto.

  3. Escriba un nombre y una descripción del repositorio. Asegúrese de que la plantilla .gitignore esté configurada como VisualStudio y seleccione Crear y enviar.

Visual Studio crea el repositorio local de Git, realiza una confirmación de cambios inicial con los archivos del proyecto SQL y lo envía al repositorio remoto.

Para comprobar que el código se ha insertado correctamente, abra un explorador y vaya al repositorio en GitHub (https://github.com) o Azure DevOps (https://dev.azure.com). Debería ver los archivos del proyecto SQL, incluido el archivo .sqlproj y las definiciones de objeto .sql.

Para obtener más información, consulte Acerca de Git en Visual Studio.

Warning

Este tutorial no está disponible para los proyectos de estilo SDK (versión preliminar) en Visual Studio 2022. Use SQL Server Management Studio (SSMS) o Visual Studio Code en su lugar.

Con la carpeta del proyecto SQL abierta en Visual Studio Code, inicialice un repositorio git local e insértelo en un remoto.

  1. Abra la vista Control de código fuente seleccionando el icono Control de código fuente en la barra de actividad o presione Ctrl+Shift+G.

  2. Seleccione Initialize Repository (Inicializar repositorio ) para crear un nuevo repositorio de Git en la carpeta actual.

  3. Todos los archivos de proyecto aparecen como cambios sin seguimiento. Seleccione el icono + junto a Cambios para preparar todos los archivos.

  4. Escriba un mensaje de confirmación como Initial commit of SQL project en el cuadro de entrada del mensaje y seleccione el botón Confirmar (icono de marca de verificación).

  5. Selecciona Publicar rama en la vista Control de código fuente para enviar tu repositorio local a un repositorio remoto. Elija si desea publicar en GitHub o Azure DevOps y siga las indicaciones de inicio de sesión. Seleccione una visibilidad del repositorio (pública o privada) y confirme.

Para comprobar que el código se ha insertado correctamente, abra un explorador y vaya al repositorio en GitHub (https://github.com) o Azure DevOps (https://dev.azure.com). Debería ver los archivos del proyecto SQL, incluido el archivo .sqlproj y las definiciones de objeto .sql.

Para obtener más información, consulte Control de código fuente en Visual Studio Code.

Con el proyecto SQL abierto en SQL Server Management Studio, cree un repositorio git local e insértelo en un remoto.

  1. Seleccione Git>Create Git Repository (Crear repositorio de Git) en la barra de menús.

  2. En el cuadro de diálogo Crear un repositorio de Git, en la sección de Push a un nuevo repositorio remoto, elija GitHub o Azure DevOps. Si decides enviar el código a GitHub, inicia sesión en tu cuenta de GitHub cuando se te solicite. Si elige Azure DevOps, inicie sesión en la cuenta de Azure DevOps y seleccione o cree un proyecto.

  3. Escriba un nombre y una descripción del repositorio. Asegúrese de que la plantilla .gitignore esté configurada como VisualStudio y seleccione Crear y enviar.

SSMS crea el repositorio local de Git, realiza una confirmación de cambios inicial con los archivos del proyecto SQL y lo envía al repositorio remoto.

Para comprobar que el código se ha insertado correctamente, abra un explorador y vaya al repositorio en GitHub (https://github.com) o Azure DevOps (https://dev.azure.com). Debería ver los archivos del proyecto SQL, incluido el archivo .sqlproj y las definiciones del objeto .sql.

Para obtener más información, consulte Acerca de Git en Visual Studio.

Desde el directorio del proyecto de SQL, inicializa un repositorio local de Git, confirma todos los archivos y envíalos a un repositorio remoto.

  1. Inicialice un nuevo repositorio de Git, agregue un .gitignore archivo y realice una confirmación inicial:

    cd MyDatabaseProject
    git init
    dotnet new gitignore
    git add .
    git commit -m "Initial commit of SQL project"
    
  2. Cree un repositorio remoto en GitHub o Azure DevOps:

    • GitHub: vaya a https://github.com/new y cree un nuevo repositorio. No lo inicialice con un README, .gitignore, ni una licencia.
    • Azure DevOps: vaya al proyecto de Azure DevOps, seleccione Repos y cree un nuevo repositorio. Desmarca la casilla Añadir un README.
  3. Añade el repositorio remoto y envía tu commit inicial:

    git remote add origin <your-repository-url>
    git push -u origin main
    

    Reemplace <your-repository-url> por la dirección URL proporcionada por GitHub o Azure DevOps al crear el repositorio.

Para comprobar que el código se inserta correctamente, abra un explorador y vaya al repositorio. Deberías ver los archivos del proyecto SQL, incluido el archivo .sqlproj y las definiciones de objetos .sql.

Paso 3: Aplicar cambios de la base de datos al código existente

Cuando el esquema de la base de datos cambia fuera del proyecto SQL (por ejemplo, mediante modificaciones directas en una base de datos, una migración ORM o acciones agenteicas), puede actualizar el proyecto para reflejar esos cambios.

Use la comparación de esquemas para actualizar el proyecto sql de la base de datos.

  1. En SQL Server Explorador de objetos, haga clic con el botón derecho en la base de datos y seleccione Comparación de esquemas.

  2. En la ventana Comparación de esquemas , la base de datos se establece como origen. Seleccione la lista desplegable Seleccionar destino y elija Seleccionar destino.

  3. En el cuadro de diálogo Seleccionar esquema de destino, seleccione Project y elija su proyecto de base de datos SQL. Selecciona Aceptar.

  4. Seleccione Comparar para ejecutar la comparación. Los resultados muestran las diferencias entre la base de datos (origen) y el proyecto (destino).

  5. Revise las diferencias. Desactive los cambios que no quiera aplicar al proyecto.

  6. Seleccione Actualizar para aplicar los cambios seleccionados al proyecto de SQL.

Los archivos del proyecto se actualizan para que coincidan con el esquema de la base de datos. Revise los cambios en la ventana Cambios de Git , escriba un mensaje de confirmación y seleccione Confirmar todo. Seleccione Insertar para insertar los cambios en el repositorio remoto.

Warning

Este tutorial no está disponible para los proyectos de estilo SDK (versión preliminar) en Visual Studio 2022. Use SQL Server Management Studio (SSMS) o Visual Studio Code en su lugar.

Use el comando Actualizar proyecto desde la base de datos para actualizar el proyecto SQL desde la base de datos.

  1. En el Explorador de objetos de la base de datos, haga clic con el botón derecho en la base de datos y seleccione SQL Database Projects>Actualizar proyecto desde la base de datos.

  2. Seleccione el proyecto de base de datos SQL para actualizar y confirmar.

  3. La comparación se ejecuta y aplica los cambios de la base de datos al proyecto. Los archivos actualizados .sql aparecen en la vista Control de código fuente como archivos modificados.

Revise los cambios en la vista Control de código fuente , almacene provisionalmente los archivos modificados, escriba un mensaje de confirmación y seleccione Confirmar. Seleccione Sincronizar cambios para insertar la confirmación en el repositorio remoto.

Use la comparación de esquemas para actualizar el proyecto sql de la base de datos.

  1. En Explorador de objetos, haga clic con el botón derecho en la base de datos y seleccione Comparación de esquemas de tareas>(versión preliminar).

  2. En la ventana Comparación de esquemas , la base de datos se establece como origen. Selecciona el botón de tres puntos de destino y elige tu proyecto de base de datos SQL como destino.

  3. Seleccione Comparar para ejecutar la comparación. Los resultados muestran las diferencias entre la base de datos (origen) y el proyecto (destino).

  4. Revise las diferencias. Desactive los cambios que no quiera aplicar al proyecto.

  5. Seleccione Aplicar para aplicar los cambios seleccionados en el proyecto de SQL.

Los archivos del proyecto se actualizan para que coincidan con el esquema de la base de datos. Revise los cambios en la ventana Cambios de Git , escriba un mensaje de confirmación y seleccione Confirmar todo. Seleccione Insertar para insertar los cambios en el repositorio remoto.

Use SqlPackage para volver a generar el proyecto SQL de la base de datos, reemplazando los archivos de proyecto existentes por el esquema de base de datos actual. Aunque las otras herramientas de proyecto de SQL proporcionan una interfaz gráfica, SqlPackage ofrece un enfoque de línea de comandos para la automatización que no proporciona la oportunidad de revisar los cambios de archivo antes de aplicarlos.

  1. Quite los archivos de objeto SQL existentes y vuelva a generar el proyecto:

    rm -rf MyDatabaseProject
    sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SqlProject
    
  2. Revise los cambios con Git y confirme:

    cd MyDatabaseProject
    dotnet new gitignore
    git add .
    git status
    git commit -m "Update project from database changes"
    git push
    

Paso 4: (opcional) Extraer cambios del repositorio remoto de Git y aplicarlos a la base de datos local

Cuando otros miembros del equipo insertan el esquema de la base de datos en el repositorio remoto, puede extraer esos cambios e implementarlos en la base de datos de desarrollo local.

  1. Seleccione Git>Pull en la barra de menús para obtener los últimos cambios del repositorio remoto.

  2. En Explorador de soluciones, haga clic con el botón derecho en el nodo del proyecto de base de datos SQL y seleccione Comparación de esquemas.

  3. En la ventana Comparación de esquemas , el proyecto se establece como origen. Seleccione la lista desplegable Seleccionar destino y elija Seleccionar destino.

  4. En el cuadro de diálogo Seleccionar esquema de destino, seleccione Base de datos y elija la conexión de base de datos de desarrollo local. Selecciona Aceptar.

  5. Seleccione Comparar para ejecutar la comparación. Los resultados muestran las diferencias entre el proyecto (origen) y la base de datos (destino).

  6. Revise las diferencias para verificar que los cambios son los previstos.

  7. Seleccione Actualizar para aplicar los cambios a la base de datos.

Warning

Este tutorial no está disponible para los proyectos de estilo SDK (versión preliminar) en Visual Studio 2022. Use SQL Server Management Studio (SSMS) o Visual Studio Code en su lugar.

  1. Abra la vista Control de código fuente y seleccione Extraer en el menú ... (o use el botón sincronizar de la barra de estado) para extraer los cambios más recientes del repositorio remoto.

  2. En la vista Proyectos de base de datos , haga clic con el botón derecho en el proyecto de base de datos SQL y seleccione Comparación de esquemas.

  3. En la ventana Comparación de esquemas , el proyecto se establece como origen. Selecciona el botón de tres puntos de destino y elige la conexión a tu base de datos de desarrollo local como destino.

  4. Seleccione Comparar para ejecutar la comparación. Los resultados muestran las diferencias entre el proyecto (origen) y la base de datos (destino).

  5. Revise las diferencias para verificar que los cambios son los esperados.

  6. Seleccione Aplicar para aplicar los cambios a la base de datos.

  1. Abra un terminal y ejecute git pull en el directorio del proyecto para extraer los cambios más recientes del repositorio remoto.

  2. En Explorador de soluciones, haga clic con el botón derecho en el nodo del proyecto de base de datos SQL y seleccione Comparación de esquemas (versión preliminar).

  3. En la ventana Comparación de esquemas , el proyecto se establece como origen. Seleccione el destino y elija la conexión de base de datos de desarrollo local.

  4. Seleccione Comparar para ejecutar la comparación. Los resultados muestran las diferencias entre el proyecto (origen) y la base de datos (destino).

  5. Revise las diferencias para verificar que los cambios son los esperados.

  6. Seleccione Aplicar para aplicar los cambios a la base de datos.

  1. Extraiga los cambios más recientes del repositorio remoto:

    cd MyDatabaseProject
    git pull
    
  2. Compile el proyecto para comprobar que los cambios se compilan correctamente:

    dotnet build
    
  3. Implemente los cambios en la base de datos de desarrollo local mediante SqlPackage:

    sqlpackage /a:Publish /sf:bin/Debug/MyDatabaseProject.dacpac /tsn:localhost /tdn:MyDatabase
    

    Reemplace MyDatabaseProject.dacpac por el nombre del archivo de .dacpac salida y actualice los valores del servidor de destino () y la base de datos (/tsn/tdn) según sea necesario.