Compartir vía


Introducción a la comparación de esquemas

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

Las herramientas de comparación de esquemas permiten comparar dos definiciones de base de datos, donde el origen y el destino de la comparación pueden ser cualquier combinación de bases de datos conectadas, proyectos de base de datos SQL o archivos .dacpac. Una vez completada la comparación, los resultados de la comparación aparecen como un conjunto de acciones que hacen que el destino sea el mismo que el origen. Las diferencias entre los modelos de base de datos se presentan de forma similar a la diferencia de control de código fuente. Si el destino de comparación de esquemas es un proyecto sql o una base de datos, puede actualizar el destino directamente desde la interfaz de comparación de esquemas o generar un script de actualización que tenga el mismo efecto.

Captura de pantalla de las diferencias entre un paquete y una base de datos como concepto.

La comparación de esquemas proporciona las siguientes características:

  • Compare esquemas entre dos .dacpac archivos, bases de datos o proyectos SQL.
  • Vea los resultados como un conjunto de acciones para comparar un objetivo con la fuente.
  • Exclusión selectiva de las acciones mostradas en los resultados
  • Establecimiento de opciones que controlan el ámbito de la comparación
  • Aplique los cambios directamente al destino o genere un script para aplicar los cambios más adelante.
  • Posibilidad de guardar la comparación

Funcionalidad

Las diferencias entre el origen y el destino aparecen en una cuadrícula para facilitar su examen. La comparación se puede realizar en cualquier dirección entre un modelo de base de datos derivado de cualquiera de las siguientes opciones:

  • base de datos conectada
  • proyecto de base de datos SQL
  • archivo .dacpac

En la comparación de esquemas, puede profundizar y revisar cada diferencia en la cuadrícula de resultados o en el formulario de script donde los detalles de los cambios están disponibles en un nivel por línea. También puede excluir de forma selectiva diferencias específicas antes de actualizar el destino. Las herramientas de comparación de esquemas están disponibles en Visual Studio, Azure Data Studio y en la línea de comandos.

Opciones de comparación de esquemas

Las opciones de comparación de esquemas se extraen de las opciones de implementación disponibles en la biblioteca .NET de DacFx. Entre estas opciones se incluyen:

  • ignorar espacio en blanco
  • ignorar esquemas de partición
  • ignorar el orden de las columnas
  • eliminar los índices que no estén en el origen
  • bloquear posibles pérdidas de datos

Los tipos de objeto que se incluyen en la comparación también se pueden configurar. Estos objetos incluyen tablas, procedimientos almacenados, índices, permisos, tipos definidos por el usuario, etc.

Archivos de comparación de esquemas

La definición de comparación para la comparación de esquemas se puede guardar como un archivo .scmp, conocido como archivo de comparación de esquemas. Este archivo almacena información sobre la comparación de esquemas en XML e incluye:

  • información de conexión de origen y de destino
  • opciones de comparación
  • tipos de objeto excluidos

Se puede abrir un .scmp archivo en Visual Studio o Azure Data Studio para volver a ejecutar fácilmente la misma comparación más adelante o para compartir la comparación con otros usuarios.

Iniciar y usar la comparación de esquemas

  1. En el menú Herramientas en Visual Studio, seleccione SQL Server y, después, Nueva comparación de esquemas.

    O bien, haga clic con el botón derecho en el proyecto TradeDev en el Explorador de soluciones y seleccione Comparación de esquemas.

    Se abrirá la ventana Comparación de esquemas y Visual Studio le asignará automáticamente un nombre como SqlSchemaCompare1.

    Justo debajo de la barra de herramientas de la ventana Comparación de esquemas, aparecen dos menús desplegables de lista con una flecha verde entre ellos. Estos menús le permiten seleccionar definiciones de base de datos para el origen y el destino de la comparación.

  2. En la lista desplegable Seleccionar origen, elija Seleccionar origen; se abre el cuadro de diálogo Seleccionar esquema de origen.

    Si abrió la ventana Comparación de esquemas haciendo clic con el botón derecho en el nombre de proyecto, el esquema de origen ya aparecerá relleno y podrá continuar con el paso 4.

    Captura de pantalla del cuadro de diálogo Seleccionar origen de comparación de esquemas en Visual Studio.

  3. Complete las selecciones de un origen de comparación de esquemas eligiendo un Proyecto, una conexión de base de datos o un archivo .dacpac. El origen es la definición de base de datos que desea usar como base para los cambios en el destino.

  4. En la lista desplegable Seleccionar destino de la ventana Comparación de esquemas, elija Seleccionar destino; se abre el cuadro de diálogo Seleccionar esquema de destino. Complete las selecciones de un destino de comparación de esquemas eligiendo un Proyecto, una conexión de base de datos o un archivo .dacpac. El destino es la definición de la base de datos a que desea evaluar y en la que desea aplicar cambios potencialmente.

  5. También puede seleccionar el botón Opciones de la barra de herramientas de la ventana Comparación de esquemas para especificar los objetos que se van a comparar, qué tipos de diferencias se van a omitir y otras opciones.

  6. Seleccione el botón Comparar de la barra de herramientas de la ventana Comparación de esquemas para iniciar el proceso de comparación.

    Cuando la comparación se complete, las diferencias estructurales entre el proyecto y la base de datos aparecerán en el panel Resultados, en la parte superior de la ventana. Los resultados de la comparación agrupan todas las diferencias por acción (como Eliminar, Cambiar o Agregar) de forma predeterminada. El panel Resultados muestra una fila por cada objeto de base de datos que es distinto entre las definiciones de base de datos. Cada fila identifica el objeto del esquema de origen o de destino (o de ambos) y la acción que se realizaría en el esquema de destino para hacer que el objeto de destino sea igual que el objeto de origen. Si un objeto se refactorizó y se cambió el nombre o se movió a un nuevo esquema, los nombres de origen y de destino son diferentes y el nombre de origen aparece en negrita para resaltar la diferencia.

    Captura de pantalla de la interfaz de comparación de esquemas en Visual Studio que compara una base de datos con un proyecto.

    De forma predeterminada, la lista de resultados oculta los objetos que son iguales en ambos esquemas o que no se admiten para la actualización (por ejemplo, los objetos integrados). Puede seleccionar los botones de filtro apropiados de la barra de herramientas para mostrar estos objetos.

    Para cambiar la preferencia de agrupación, seleccione la lista desplegable Agrupar los resultados de la barra de herramientas. Seleccione Tipo para agrupar los resultados por tipo de objeto (por ejemplo, por tablas, vistas o procedimientos almacenados).

  7. De forma predeterminada, todas las diferencias se incluyen en el ámbito de la acción Actualizar destino. Puede excluir las diferencias que no quiera sincronizar. Para ello, desactive la casilla de la columna Acción en el centro de cada fila. También puede hacer clic con el botón derecho en una fila en el panel Esquema y seleccionar Excluir. La fila se inhabilita inmediatamente. Cuando la comparación de esquemas se usa para actualizar la base de datos de destino, no se tendrá en cuenta esta fila en ningún cambio pendiente.

    También puede hacer clic con el botón derecho en una fila de grupo y seleccionar Excluir todo o Incluir todo, que equivale a desactivar o activar todas las diferencias de ese grupo. Al agrupar los resultados por esquema, hacer clic con el botón derecho en la fila de grupo es una manera útil de incluir o excluir todos los cambios en un esquema específico.

    Si la fila que se va a excluir tiene objetos dependientes (por ejemplo, una fila Tabla a la que se hace referencia mediante una fila Vista), esta fila se deshabilitará, pero su casilla no se mostrará desactivada. Una vez que se desactiven todas las filas que dependen de ella, la fila deshabilitada aparece desactivada. Por otra parte, si una fila se refactoriza (se le cambia el nombre o se traslada a otro esquema), se desactivará su casilla y todas las filas secundarias dependientes de la misma.

    Si actualiza la comparación, se omiten esas diferencias que eligió omitir.

Para actualizar el esquema del destino, tiene dos opciones. Si el destino es una base de datos o un proyecto, puede actualizarlo directamente desde la ventana Comparación de esquemas o bien, si el destino es una base de datos o un archivo de base de datos, puede generar un script de actualización. Los scripts generados aparecen en el Editor de Transact-SQL, desde donde puede inspeccionar el script y ejecutarlo en una base de datos.

Nota:

La comparación gráfica de esquemas está parcialmente disponible en la versión preliminar de proyectos SQL de estilo SDK en Visual Studio. Las comparaciones de esquema están disponibles para bases de datos y .dacpac archivos conectados, los proyectos de SQL Database aún no están disponibles.

  1. En el menú Herramientas en Visual Studio, seleccione SQL Server y, después, Nueva comparación de esquemas.

    O bien, haga clic con el botón derecho en el proyecto TradeDev en el Explorador de soluciones y seleccione Comparación de esquemas.

    Se abrirá la ventana Comparación de esquemas y Visual Studio le asignará automáticamente un nombre como SqlSchemaCompare1.

    Justo debajo de la barra de herramientas de la ventana Comparación de esquemas, aparecen dos menús desplegables de lista con una flecha verde entre ellos. Estos menús le permiten seleccionar definiciones de base de datos para el origen y el destino de la comparación.

  2. En la lista desplegable Seleccionar origen, elija Seleccionar origen; se abre el cuadro de diálogo Seleccionar esquema de origen.

    Si abrió la ventana Comparación de esquemas haciendo clic con el botón derecho en el nombre de proyecto, el esquema de origen ya aparecerá relleno y podrá continuar con el paso 4.

    Captura de pantalla del cuadro de diálogo Seleccionar origen de comparación de esquemas en Visual Studio.

  3. Complete las selecciones de un origen de comparación de esquemas eligiendo un Proyecto, una conexión de base de datos o un archivo .dacpac. El origen es la definición de base de datos que desea usar como base para los cambios en el destino.

  4. En la lista desplegable Seleccionar destino de la ventana Comparación de esquemas, elija Seleccionar destino; se abre el cuadro de diálogo Seleccionar esquema de destino. Complete las selecciones de un destino de comparación de esquemas eligiendo un Proyecto, una conexión de base de datos o un archivo .dacpac. El destino es la definición de la base de datos a que desea evaluar y en la que desea aplicar cambios potencialmente.

  5. También puede seleccionar el botón Opciones de la barra de herramientas de la ventana Comparación de esquemas para especificar los objetos que se van a comparar, qué tipos de diferencias se van a omitir y otras opciones.

  6. Seleccione el botón Comparar de la barra de herramientas de la ventana Comparación de esquemas para iniciar el proceso de comparación.

    Cuando la comparación se complete, las diferencias estructurales entre el proyecto y la base de datos aparecerán en el panel Resultados, en la parte superior de la ventana. De forma predeterminada, los resultados de la comparación agrupan todas las diferencias por acción (como Eliminar, Cambiar o Agregar). El panel Resultados muestra una fila por cada objeto de base de datos que es distinto entre las definiciones de base de datos. Cada fila identifica el objeto del esquema de origen o de destino (o de ambos) y la acción que se realizaría en el esquema de destino para hacer que el objeto de destino sea igual que el objeto de origen. Si un objeto se refactorizó y se cambió el nombre o se movió a un nuevo esquema, los nombres de origen y de destino son diferentes y el nombre de origen aparece en negrita para resaltar la diferencia.

    Captura de pantalla de la interfaz de comparación de esquemas en Visual Studio que compara una base de datos con un proyecto.

    De forma predeterminada, la lista de resultados oculta los objetos que son iguales en ambos esquemas o que no se admiten para la actualización (por ejemplo, los objetos integrados). Puede seleccionar los botones de filtro apropiados de la barra de herramientas para mostrar estos objetos.

    Para cambiar la preferencia de agrupación, seleccione la lista desplegable Agrupar los resultados de la barra de herramientas. Seleccione Tipo para agrupar los resultados por tipo de objeto (por ejemplo, por tablas, vistas o procedimientos almacenados).

  7. De forma predeterminada, todas las diferencias se incluyen en el ámbito de la acción Actualizar destino. Puede excluir las diferencias que no quiera sincronizar. Para ello, desactive la casilla de la columna Acción en el centro de cada fila. También puede hacer clic con el botón derecho en una fila en el panel Esquema y seleccionar Excluir. La fila se inhabilita inmediatamente. Cuando la comparación de esquemas se usa para actualizar la base de datos de destino, no se tendrá en cuenta esta fila en ningún cambio pendiente.

    También puede hacer clic con el botón derecho en una fila de grupo y seleccionar Excluir todo o Incluir todo, que equivale a desactivar o activar todas las diferencias de ese grupo. Cuando se agrupan resultados por esquema, esta es una forma útil de incluir o excluir todos los cambios a un esquema determinado.

    Si la fila que se va a excluir tiene objetos dependientes (por ejemplo, una fila Tabla a la que se hace referencia mediante una fila Vista), esta fila se deshabilitará, pero su casilla no se mostrará desactivada. Una vez que se desactiven todas las filas que dependen de ella, la fila deshabilitada aparece desactivada. Por otra parte, si una fila se refactoriza (se le cambia el nombre o se traslada a otro esquema), se desactivará su casilla y todas las filas secundarias dependientes de la misma.

    Si actualiza la comparación, se pasan por alto las diferencias que haya elegido omitir.

Para actualizar el esquema del destino, tiene dos opciones. Si el destino es una base de datos o un proyecto, puede actualizarlo directamente desde la ventana Comparación de esquemas o bien, si el destino es una base de datos o un archivo de base de datos, puede generar un script de actualización. Los scripts generados aparecen en el Editor de Transact-SQL, desde donde puede inspeccionar el script y ejecutarlo en una base de datos.

Encontrará más información detallada sobre la comparación de esquemas en Visual Studio Code en el artículo Comparación de esquemas (versión preliminar)

  1. En Visual Studio Code, en la paleta de comandos (ctrl/cmd+shift+P), busque y seleccione MSSQL: Comparación de esquemas (versión preliminar).

    Como alternativa, haga clic con el botón derecho sobre un proyecto de base de datos en la vista Proyectos de base de datos o en una base de datos en el Explorador de objetos y seleccione Comparación de esquemas.

    Captura de pantalla del elemento de menú Comparación de esquemas en el Explorador de objetos de Visual Studio Code.

    Se abre la ventana Comparación de esquemas y se puede preestablecer un origen o destino en función del punto de inicio.

    Justo debajo de la barra de herramientas de la ventana Comparación de esquemas, aparecen dos botones de puntos suspensivos con una flecha entre ellos. Estos menús le permiten seleccionar definiciones de base de datos para el origen y el destino de la comparación.

  2. Al seleccionar el botón de puntos suspensivos del origen o destino, se abre un cuadro de diálogo donde se puede actualizar cada uno. Complete las selecciones de un origen de comparación de esquemas eligiendo un Proyecto, una conexión de base de datos o un archivo .dacpac. El origen es la definición de base de datos que desea usar como base para los cambios en el destino. El destino es la definición de la base de datos a que desea evaluar y en la que desea aplicar cambios potencialmente.

    Captura de pantalla del cuadro de diálogo Selección de origen de comparación de esquemas en Visual Studio Code.

    Una vez completadas las selecciones, seleccione Aceptar para cerrar el cuadro de diálogo y volver a la ventana Comparación de esquemas.

  3. También puede seleccionar el botón Opciones de la barra de herramientas de la ventana Comparación de esquemas para especificar los objetos que se van a comparar, qué tipos de diferencias se van a omitir y otras opciones.

  4. Seleccione el botón Comparar de la barra de herramientas de la ventana Comparación de esquemas para iniciar el proceso de comparación.

    Cuando la comparación se complete, las diferencias estructurales entre el proyecto y la base de datos aparecerán en el panel Resultados, en la parte superior de la ventana. De forma predeterminada, los resultados de la comparación agrupan todas las diferencias por acción (como Eliminar, Cambiar o Agregar). El panel Resultados muestra una fila por cada objeto de base de datos que es distinto entre las definiciones de base de datos. Cada fila identifica el objeto del esquema de origen o de destino (o de ambos) y la acción que se realizaría en el esquema de destino para hacer que el objeto de destino sea igual que el objeto de origen. Si un objeto se ha refactorizado y se cambiado de nombre o movido a un nuevo esquema, los nombres de origen y de destino son diferentes y el nombre de origen aparece en negrita para resaltar la diferencia.

    Captura de pantalla de la interfaz de comparación de esquemas en Azure Data Studio que compara una base de datos con un proyecto.

  5. De forma predeterminada, todas las diferencias se incluyen en el ámbito de la acción Actualizar destino. Puede excluir las diferencias que no quiera sincronizar. Para ello, desactive la casilla de la columna Acción en el centro de cada fila. Cuando se usa la comparación de esquemas para actualizar la base de datos de destino, esta fila no se considera para los cambios pendientes.

    Si la fila que se va a excluir tiene objetos dependientes (por ejemplo, una fila Tabla a la que se hace referencia mediante una fila Vista), esta fila se deshabilitará, pero su casilla no se mostrará desactivada. Una vez que se desactiven todas las filas que dependen de ella, la fila deshabilitada aparece desactivada. Por otra parte, si una fila se refactoriza (se le cambia el nombre o se traslada a otro esquema), se desactivará su casilla y todas las filas secundarias dependientes de la misma.

    Si actualiza la comparación, se pasan por alto las diferencias que haya elegido omitir.

Para actualizar el esquema del destino, tiene dos opciones. Si el destino es una base de datos o un proyecto, puede actualizarlo directamente desde la ventana Comparación de esquemas mediante el botón Aplicar o bien, si el destino es una base de datos, puede generar un script de actualización mediante el botón Generar script. Los scripts generados aparecen en el Editor de Transact-SQL, desde donde puede inspeccionar el script y ejecutarlo en una base de datos.

La comparación de esquemas requiere una herramienta gráfica como Visual Studio o Azure Data Studio.