Introducción a la comparación de esquemas

Se aplica a:SQL ServerAzure SQL DatabaseInstancia administrada de Azure SQLBase de datos SQL en Microsoft Fabric

Las herramientas de comparación de esquemas permiten comparar dos definiciones de base de datos. Puede usar cualquier combinación de base de datos conectada, proyecto de base de datos SQL o .dacpac archivo como origen y destino de la comparación. Cuando finalice la comparación, verá los resultados 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 aparecen 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.

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

Functionality

Las diferencias entre el origen y el destino aparecen en una cuadrícula para facilitar su examen. Puede comparar 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, Visual Studio Code y la línea de comandos.

Opciones de comparación de esquemas

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

  • Omitir espacios en blanco
  • Omitir esquemas de partición
  • Omitir el orden de las columnas
  • Eliminar índices que no estén en el origen
  • Bloquear la posible pérdida de datos

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

Archivos de comparación de esquemas

Puede guardar la definición de comparación para la comparación de esquemas como un .scmp archivo, 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

Puede abrir un .scmp archivo en Visual Studio para volver a ejecutar 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 abre la ventana Comparación de esquemas haciendo clic con el botón derecho en el nombre del proyecto, el esquema de origen ya se ha rellenado y puede 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 objetivo es la definición de la base de datos que desea evaluar y a la que quizá desee aplicar cambios.

  5. Seleccione Opciones en la barra de herramientas Ventana de comparación de esquemas para especificar qué objetos se comparan, qué tipos de diferencias se omiten y otras opciones de configuración.

  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 se agrupan 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 los mismos en ambos esquemas o que no se admiten para la actualización, como los objetos integrados. Seleccione las opciones de filtro adecuadas en 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 sombrea inmediatamente. Cuando se usa la comparación de esquemas para actualizar la base de datos de destino, esta fila no se considera para 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, puede elegir entre 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. Aparece un script generado en el editor de Transact-SQL, desde el que puede inspeccionar el script y ejecutarlo en una base de datos.

Note

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 abre la ventana Comparación de esquemas haciendo clic con el botón derecho en el nombre del proyecto, el esquema de origen ya se ha rellenado y puede 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 objetivo es la definición de la base de datos que desea evaluar y a la que quizá desee aplicar cambios.

  5. Seleccione Opciones en la barra de herramientas Ventana de comparación de esquemas para especificar qué objetos se comparan, qué tipos de diferencias se omiten y otras opciones de configuración.

  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 se agrupan 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 los mismos en ambos esquemas o que no se admiten para la actualización, como los objetos integrados. Seleccione las opciones de filtro adecuadas en 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 sombrea inmediatamente. Cuando se usa la comparación de esquemas para actualizar la base de datos de destino, esta fila no se considera para 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 pasan por alto las diferencias que haya elegido omitir.

Para actualizar el esquema del destino, puede elegir entre 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. Aparece un script generado en el editor de Transact-SQL, desde el que 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.

  1. En Visual Studio Code, en la paleta de comandos (ctrl/cmd+shift+P), busque y seleccione MSSQL: 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 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 objetivo es la definición de la base de datos que desea evaluar y a la que quizá desee aplicar cambios.

    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 se agrupan 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 Code 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, puede elegir entre 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. Aparece un script generado en el editor de Transact-SQL, desde el que puede inspeccionar el script y ejecutarlo en una base de datos.

En SQL Server Management Studio, puede usar la herramienta Comparación de esquemas para comparar bases de datos, proyectos o archivos .dacpac.

  1. En SQL Server Management Studio, conéctese a la base de datos que desea comparar.

  2. En el 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).

  3. En la ventana Comparación de esquemas, complete las selecciones de un destino de comparación de esquemas eligiendo un archivo Project, conexión de base de datos o .dacpac.

  4. Seleccione Comparar para iniciar la 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 se agrupan 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.

  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 columna Incluir 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.

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

Para actualizar el esquema del destino, puede elegir entre 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. Aparece un script generado en el editor de Transact-SQL, desde el que puede inspeccionar el script y ejecutarlo en una base de datos.

Comparación de esquemas está disponible en SQL Server Management Studio, Visual Studio o a través de la extensión MSSQL para Visual Studio Code.