Compartir a través de


Introducción a la comparación de esquemas

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance

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 de forma similar a una diferencia de control de código fuente. Desde una interfaz de comparación de esquemas, puede actualizar el destino directamente (si es un proyecto o una base de datos) o generar un script de actualización que produzca el mismo efecto.

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

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

  • Comparación de esquemas entre dos archivos dacpac, dos bases de datos o dos proyectos SQL
  • Visualización de los resultados como un conjunto de acciones que deben tomarse en el destino para que coincida con el origen
  • Exclusión selectiva de las acciones mostradas en los resultados
  • Establecimiento de opciones que controlan el ámbito de la comparación
  • Aplicación de los cambios directamente en el destino o creación de un script para aplicarlos 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 a nivel de 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. 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.

La comparación gráfica de esquemas aún no está disponible en la versión preliminar de proyectos SQL de estilo SDK en Visual Studio. Use Azure Data Studio para comparar esquemas.

Nota:

La comparación de esquemas no está disponible en Visual Studio Code. Use Azure Data Studio o Visual Studio para comparar esquemas.

  1. En Azure Data Studio, en la paleta de comandos (ctrl/cmd+shift+P), busque y seleccione Comparación de esquemas.

    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 Azure Data Studio.

    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 para el origen o destino, se abre un cuadro de diálogo en el que se puede actualizar uno de ellos o ambos. 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 de selección del origen de la comparación de esquemas en Azure Data Studio.

    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á 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. 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 se mostrará 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 pasarán 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.