Compartir a través de


Comparar y sincronizar esquemas de base de datos

Este tema se aplica a:

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional 

Visual Studio Express

El tema es aplicable El tema es aplicable El tema no es aplicable El tema no es aplicable

Puede utilizar Visual Studio Premium o Visual Studio Ultimate para comparar un esquema de destino con un esquema de origen. En cada diferencia, puede especificar si desea actualizar el destino para que coincida con el origen. Puede escribir estas actualizaciones directamente en el destino o bien puede exportar el script de actualización al editor de Transact-SQL o a un archivo. También puede guardar sus comparaciones, ya sea como parte del proyecto de base de datos o bien como un archivo independiente. Si guarda las comparaciones, puede repetirlas o volver a sincronizar el mismo origen y destino con más facilidad.

Tipos de comparaciones de esquema

Puede comparar las siguientes entidades que contienen definiciones de esquema de la base de datos:

  • Base de datos SQL Server: base de datos que se ejecuta en una instancia de SQL Server 2008 o SQL Server 2005

  • Proyecto de base de datos: proyecto que contiene definiciones para una base de datos SQL Server 2008 o SQL Server 2005 y que genera un archivo .dbschema cuando se compila

  • Proyecto de servidor: proyecto que contiene definiciones para los objetos de servidor y los objetos de la base de datos maestra en un servidor SQL Server 2008 o SQL Server 2005 y que genera un archivo .dbschema cuando se compila

  • Proyecto de aplicación de capa de datos (DAC): proyecto que genera un archivo .dacpac cuando se compila

  • Archivo .dbschema: resultado de la compilación de un proyecto de base de datos o de servidor

  • Archivo .dacpac: resultado de la compilación de un proyecto de componente de aplicación de capa de datos (DAC)

En la siguiente tabla se muestran los tipos de esquemas que puede comparar y se indica si puede escribir actualizaciones en el destino:

Origen vertical,

destino horizontal

Base de datos

Proyecto de base de datos

Archivo .dbschema

Proyecto de servidor

Proyecto DAC

Archivo .dacpac

Base de datos

Comparar + Actualizar

Comparar + Actualizar

Comparar

Comparar + Actualizar

Comparar

Comparar

Proyecto de base de datos

Comparar + Actualizar

Comparar + Actualizar

Comparar

Ninguno

Ninguna

Ninguna

Archivo .dbschema

Comparar + Actualizar

Comparar + Actualizar

Comparar

Comparar + Actualizar

Ninguna

Ninguna

Proyecto de servidor

Comparar + Actualizar

Ninguno

Comparar

Comparar + Actualizar

Ninguna

Ninguna

Proyecto DAC

Comparar

Ninguno

Ninguno

Ninguno

Comparar + Actualizar

Comparar

Archivo .dacpac

Comparar

Ninguno

Ninguna

Ninguna

Comparar + Actualizar

Comparar

Para leer esta tabla, busque la fila de su esquema de origen en la columna situada más a la izquierda. Luego, busque la columna del esquema de destino en la fila superior. La intersección de esa columna y esa fila proporciona información sobre si puede comparar solo el origen y el destino, o si compara y a continuación actualiza opcionalmente el esquema de destino.

No puede comparar un esquema del servidor con un esquema de la base de datos ni un esquema de la base de datos con un esquema del servidor. Esto incluye los esquemas con el formato de un archivo .dbschema. Por ejemplo, puede comparar un proyecto de servidor con un archivo .dbschema creado a partir de un proyecto de servidor.

Solo puede comparar dos proyectos de base de datos si se encuentran dentro de la misma solución en Visual Studio.

Nota de precauciónPrecaución

Si bien puede comparar una base de datos de origen con un proyecto de base de datos de destino (.dbproj), debería cambiar el proyecto de base de datos e implementar esos cambios en la base de datos. Al cambiar el proyecto (.dbproj) y, a continuación, implementarlo, reduce el riesgo de que los cambios entren en conflicto con los cambios realizados por otro miembro del equipo, ya que el proyecto está bajo el control de versiones.

Evitar la pérdida de datos al actualizar los esquemas de la base de datos

Al utilizar Comparación de esquemas para actualizar los esquemas de la base de datos, se pueden perder datos. Para evitarlo, debe prestar mucha atención a los nombres de los objetos del origen y del destino, especialmente justo antes de actualizar el esquema en el destino.

Por ejemplo, podría cambiar el nombre de una tabla Order_Details a OrderDetails en la base de datos de origen pero no en la base de datos de destino y, a continuación, comparar las dos bases de datos. Antes de sincronizarlas, los datos en ambas tablas son idénticos. Sin embargo, al actualizar el destino, se elimina la tabla Order_Details y se crea una nueva tabla denominada OrderDetails. Podría perder todos los datos de la tabla Order_Details.

Para ayudar a evitar la pérdida de datos, puede abrir el menú Herramientas, hacer clic en Opciones y activar la casilla Bloquear actualizaciones de esquema si pueden dar lugar a pérdida de datos. Además, siempre debería realizar una copia de seguridad de la base de datos antes de escribir actualizaciones en ella. También puede especificar opciones para una comparación al comparar esquemas. Para obtener más información, vea Cómo: Establecer opciones para comparar esquemas de base de datos.

Nota importanteImportante

Si utiliza la refactorización para cambiar el nombre de los objetos del proyecto de base de datos, el registro de refactorización también ayuda a evitar la pérdida de datos cuando se compila e implementa la base de datos. Este registro mantiene la intención de los cambios. Por ejemplo, se puede cambiar el nombre de las tablas en su posición.

Diferencias entre la comparación de esquemas y la implementación incremental

Cuando se implementan actualizaciones en una base de datos existente, el proceso es muy similar al proceso que se sigue al usar Comparación de esquemas para sincronizar dos esquemas de base de datos. Sin embargo, Comparación de esquemas presenta una diferencia importante: de forma predeterminada, Comparación de esquemas omite las propiedades extendidas.

Puede cambiar las opciones de Comparación de esquemas para todas las sesiones de Comparación de esquemas o bien para la sesión actual si no desea omitir las propiedades y los permisos extendidos. Para obtener más información, vea Cómo: Establecer opciones para comparar esquemas de base de datos.

Tareas comunes

En la siguiente tabla, encontrará descripciones de tareas comunes que admiten este escenario y vínculos para obtener más información acerca de cómo puede completar correctamente dichas tareas.

Tareas comunes

Contenido adicional

Conseguir experiencia práctica: puede seguir los tutoriales preliminares para familiarizarse con el método de comparación de dos bases de datos o de una base de datos y un proyecto (.dbproj).

Tutorial: Comparar los esquemas de dos bases de datos

Tutorial: Comparar los esquemas de una base de datos y un proyecto de base de datos

Establecer opciones para controlar cómo se comparan los esquemas: puede configurar detalles que controlan cómo se comparan los esquemas. Puede omitir tipos específicos de diferencias, como el espacio en blanco, los grupos de archivos y los comentarios. También puede omitir categorías de objetos, como usuarios o inicios de sesión. Puede especificar opciones que controlan el script de actualización generado.

Cómo: Establecer opciones para comparar esquemas de base de datos

Comparar objetos de base de datos o de servidor y opcionalmente actualizar el destino para coincidir con el origen: especifica los esquemas de origen y de destino para comparar; los resultados aparecen en la ventana Comparación de esquemas. Puede ver los detalles de las diferencias y el script de actualización que se utilizará para sincronizar la base de datos. Puede guardar cada comparación de esquemas en el proyecto o en un archivo .scmp independiente. Especifica las acciones para cada diferencia entre los esquemas de origen y de destino y, a continuación, puede escribir las actualizaciones en el destino. También puede exportar el script de actualización al editor de Transact-SQL o a un archivo para revisarlo antes de aplicar los cambios en el destino.

Cómo: Comparar esquemas de base de datos

Introducción a los resultados de la comparación de esquemas

Solucionar los problemas: puede obtener más información sobre cómo solucionar problemas comunes que podría encontrar al comparar y sincronizar esquemas de base de datos.

Solucionar problemas de comparación de esquemas

Introducción a los resultados de la comparación de esquemas

La ventana Comparación de esquemas muestra cuatro columnas para cada objeto que se compara. En la tabla siguiente se describe el contenido de cada columna.

Columna

Valores

Estado

  • Igual: el objeto tiene la misma definición y contiene los mismos objetos en los esquemas de origen y de destino.

  • Nuevo: el objeto existe en el esquema de origen pero no en el de destino.

  • Falta: el objeto existe en el esquema de destino pero no en el de origen.

  • Definición diferente: el objeto tiene una definición diferente en el esquema de origen y en el destino.

  • Dependencias diferentes: el objeto tiene la misma definición pero contiene objetos diferentes en el esquema de origen y el esquema de destino.

Por ejemplo, podría cambiar una definición de tabla en el esquema de origen pero no el esquema de destino y, a continuación, comparar los esquemas. Las tablas se marcarán como Definición diferente y el esquema que contiene estas tablas se marcará como Dependencias diferentes.

nombreDeOrigen ({proyecto, base de datos o archivo de proyecto (.dbschema) de origen})

El nombre del proyecto, la base de datos o el archivo de proyecto de origen que compara.

Acción de actualización

  • Omitir: el objeto no se actualizará en el esquema de destino. Si el objeto tiene dependencias que han cambiado, el icono indicará que debería expandir esta fila para ver el objeto al que se hace referencia y es diferente.

  • Omitir referencias: el objeto existe en una base de datos a la que se hace referencia y no es necesario quitarlo ni crearlo.

  • Crear: el objeto se creará al escribir las actualizaciones o al ejecutar el script de actualización.

  • Actualizar: la definición del objeto se actualizará para coincidir con el esquema de origen al escribir las actualizaciones o al ejecutar el script de actualización.

  • Quitar: el objeto se quitará del esquema de destino al escribir las actualizaciones o al ejecutar el script de actualización.

NotaNota
La acción predeterminada viene determinada por el estado.En los objetos con estado Igual, la acción predeterminada es Omitir y no se puede cambiar.En los objetos con estado Nuevo, la acción predeterminada es Crear, pero puede especificar Omitir.En los objetos con estado Falta, la acción predeterminada es Quitar, pero puede especificar Omitir.En Definición diferente, la acción predeterminado es Actualizar, pero puede especificar Omitir.En Objetos diferentes, la acción predeterminado es Omitir y no puede cambiarla (en este caso, el objeto es igual, pero contiene objetos que son nuevos, que faltan o que han cambiado).

nombreDeDestino ({proyecto, base de datos o archivo de proyecto (.dbschema) de destino})

El nombre del proyecto, la base de datos o el archivo de proyecto de destino que compara.

Escenarios relacionados

Historial de cambios

Fecha

Historial

Motivo

Junio de 2010

Información agregada sobre cómo leer la primera tabla del tema para solucionar los problemas de los clientes.

Comentarios de los clientes.

Agosto de 2010

Aclarado que se pueden comparar los proyectos solo si se encuentran en la misma solución.

Comentarios de los clientes.