Comparación de comparadores para sincronizar esquemas y datos de bases de datos de MS SQL Server

Descripción de la necesidad general de sincronización de cambios


Al trabajar con bases de datos, a menudo tiene que resolver el problema de sincronizar los cambios.
Si la empresa usa solo un entorno industrial, además de él, se requiere al menos un entorno adicional adicional para probar los cambios realizados. En este caso, se hace necesario transferir los cambios del entorno de prueba al industrial.

Con el crecimiento de la compañía, la cantidad de servidores y entornos virtuales necesarios puede aumentar, y la cantidad de instancias de sistemas de administración de bases de datos también puede crecer, entonces existe la necesidad de una sincronización más compleja.

Como regla general, las bases de datos se desarrollan en un entorno dedicado. Luego, los cambios se transfieren al entorno de prueba para varias pruebas (pruebas unitarias, pruebas automáticas, pruebas de carga, etc.). Y solo después de todas las etapas de desarrollo e inspecciones se lleva a cabo la transferencia de cambios al entorno industrial.

Con una infraestructura suficientemente grande, se hace necesario transferir los cambios a varios entornos industriales a la vez. Además, el desarrollo de la base de datos se puede dividir en diferentes entornos por funcionalidad, y luego es necesario transferir periódicamente los cambios entre estos entornos.

Hay casos en que los cambios se aplicaron fuera del entorno de desarrollo y deben transferirse a él. Pero tales situaciones deben minimizarse para que no exista una amenaza para el correcto funcionamiento del sistema.


En general, la secuencia de transferencia de cambios se puede representar de la siguiente manera:
  1. Entre entornos de desarrollo.
  2. Desde entornos de desarrollo hasta entornos de prueba.
  3. Entre entornos de prueba. Si realiza cambios que no provienen del entorno de desarrollo en ninguno de los entornos de prueba, dichos cambios también se transfieren al entorno de desarrollo. Como regla general, todos los cambios deben venir del entorno de desarrollo al entorno de prueba, pero no al revés.
  4. Desde el entorno de prueba hasta los entornos preindustriales, donde se recopilan los cambios para cada entorno industrial específico, se llevan a cabo las últimas pruebas de integración, así como pruebas para revertir los cambios en caso de fallas por etapas previamente especificadas.
  5. Desde el entorno preindustrial hasta el entorno industrial con la capacidad de revertir rápidamente los cambios realizados.

Existen varias herramientas para sincronizar cambios entre entornos, por ejemplo:
  1. Visual Studio Comparer
  2. Servicios de integración de SQL Server
  3. dbForge Comparer por Devart
  4. Quest Software ApexSQL
  5. Soluciones RedGate

Por lo general, las soluciones escritas en .NET (por ejemplo, escritas en C #) funcionan con MS SQL Server.

Este artículo discutirá un ejemplo de transferencia de cambios a una base de datos de MS SQL Server de un servidor a otro usando herramientas de Devart, Quest Software y RedGate. Al final, se realizará una comparación de estas herramientas.

En este artículo, por ejemplo, consideraremos la base de datos SRV, que está diseñada para servir al DBMS de MS SQL Server. Puede descargar sus fuentes aquí .
Esta base de datos SRV se distribuye libremente para cualquier propósito.

Soluciones Devart


Las soluciones de sincronización de la base de datos MS SQL Server de Devart se llaman DbForge Data Comparer , DbForge Schema Comparer y dbForge Compare Bundle para SQL Server . Los dos primeros están integrados en DbForge Studio para MS SQL Server , y el tercero directamente en SSMS .
Revisión detallada de la solución Devart

Sincronización de esquema de base de datos


Después de abrir el estudio, vaya a la pestaña "Sincronización de base de datos" y cree una nueva conexión haciendo clic en el botón "Nueva conexión":


En la ventana de configuración de conexión que se abre, debe ingresar los datos necesarios para conectarse a la instancia de MS SQL Server (servidor de origen). Tenga en cuenta que además de MS SQL Server, Windows, autenticación de Active Directory, ha aparecido la autenticación a través de MFA. Después de completar todos los campos obligatorios, haga clic en el botón "Probar conexión" para probar la conexión:


Una vez establecida la conexión, aparece el siguiente cuadro de diálogo:


A continuación, haga clic en el botón "Aceptar" en el cuadro de diálogo y en el mismo botón en la ventana de configuración de conexión.

Ahora ha aparecido una nueva conexión:


Del mismo modo, debe conectar todas las instancias necesarias de MS SQL Server (en este ejemplo, debe crear una conexión para el servidor de destino).

Después de eso, haga clic en "Nueva comparación de esquemas" para configurar el proceso de comparación de esquemas de bases de datos en el servidor de origen y la base de datos en el servidor de destino:


Aparecerá una ventana de configuración para comparar circuitos.

En la pestaña "Origen y destino" a la izquierda en el panel Origen, debe seleccionar:
  1. tipo
  2. conexión
  3. base de datos fuente

A la derecha en el panel Objetivo, debe seleccionar:
  1. tipo
  2. conexión
  3. base de datos del receptor

Tenga en cuenta que en el tipo puede seleccionar no solo la base de datos, sino también el directorio del script, la instantánea, el control de versiones y la copia de seguridad. En nuestro caso, seleccionamos en el tipo de "base de datos".

Después de seleccionar todas las configuraciones, debe hacer clic en el botón "Siguiente" para continuar configurando la sincronización de los esquemas de la base de datos.

Si se comparan dos bases de datos inicialmente idénticas, puede comenzar inmediatamente a comparar los esquemas haciendo clic en el botón "Comparar".

Si es necesario, puede ir a cualquier pestaña de configuración haciendo clic en el elemento correspondiente en la ventana izquierda.

En cualquier etapa, puede guardar la configuración como un archivo bat haciendo clic en el botón "Guardar línea de comando" en la esquina inferior izquierda de la ventana.

En la mayoría de los casos, al pasar cambios entre bases de datos inicialmente idénticas, simplemente haga clic en el botón "Comparar". Pero para estudiar la funcionalidad, debe hacer clic en "Siguiente":


En la pestaña Opciones, puede establecer varias configuraciones o dejarlas de forma predeterminada:


En la pestaña "Asignación de esquemas", puede configurar la asignación de esquemas por nombre:


En la pestaña "Asignación de tablas", puede configurar la asignación de tablas y columnas:


En la pestaña "Filtro de objetos", puede especificar objetos para la comparación.

Después de eso, si es necesario, puede volver a los pasos anteriores.

Al final, debe hacer clic en el botón "Comparar" para comenzar el proceso de comparación de los esquemas de las bases de datos especificadas:


La ventana de configuración de comparación del esquema de la base de datos desaparecerá y aparecerá una ventana con un indicador del proceso de comparación:


Al final del proceso, preste atención a la ventana. Puede cambiar la configuración de comparación haciendo clic en el botón "Editar comparación" en la esquina superior izquierda de la ventana. A la derecha de este botón hay un círculo con una flecha: este es el botón de actualización, que inicia el proceso de comparación de esquemas nuevamente. También se encuentran a continuación todos los servidores previamente registrados:


A través del menú principal en Archivo, puede guardar la configuración para comparar esquemas como un archivo con la extensión scomp.

Ahora prestemos atención a la parte central de la ventana. Aquí debe seleccionar los objetos necesarios para la sincronización con las marcas de verificación. A la izquierda están los objetos fuente, y a la derecha, el receptor. A continuación, de la misma manera, se encuentra el código para definir objetos. Los objetos para comparación se dividen en 4 secciones con un recuento del número de estos objetos en cada sección.
Aquí, se selecciona una tabla para ver el código de definición, que está tanto en la fuente como en el receptor. Por lo tanto, este objeto se encuentra en la sección "Diferente":


Cuando selecciona este objeto, su código de definición a la izquierda se moverá a la derecha al sincronizar esquemas de base de datos para el receptor.
Aquí, para ver el código de definición, se selecciona una vista que solo está en la fuente. Por lo tanto, este objeto se encuentra en la sección "Solo en el origen" y no hay un código de definición a la derecha:


Al elegir dicho objeto, se generará su código de creación para el receptor.
Aquí, para ver el código de definición, se selecciona una vista que solo está en el receptor. Por lo tanto, este objeto se encuentra en la sección "Solo en el objetivo" y no hay un código de definición a la izquierda:


Al elegir dicho objeto, se generará su código de eliminación para el receptor.
Luego, para comenzar el proceso de sincronización de los esquemas de la base de datos, haga clic en uno de los botones resaltados en rojo en la imagen:


En la pestaña "Salida", debe especificar cómo ocurrirá el proceso de sincronización. Por lo general, la generación del script se selecciona en el estudio o en un archivo. En nuestro caso, elegiremos la primera opción. Se recomienda que siga cuidadosamente la secuencia de todas las pestañas para configurar el proceso de sincronización:


En la pestaña "Opciones", puede establecer varias configuraciones para sincronizar los esquemas de la base de datos.
Por lo general, se eliminan todas las configuraciones del grupo de copia de seguridad de la base de datos.
De forma predeterminada, en el grupo de configuración "Transacciones", se configuran "Usar una sola transacción" y "Establecer el nivel de aislamiento de la transacción en SERIALIZABLE", lo que evita situaciones en las que solo se pueden aplicar partes de los cambios, es decir los cambios se aplicarán en su totalidad o en absoluto:


La pestaña Resumen muestra los resultados de la selección de la configuración de sincronización. Si es necesario, puede volver a los párrafos anteriores.
Tenga en cuenta que la configuración para sincronizar los esquemas de la base de datos también se puede guardar en un archivo bat haciendo clic en el botón "Guardar línea de comandos" en la parte inferior izquierda de la ventana.
Al final, debe hacer clic en el botón "Sincronizar" para comenzar el proceso de generar un script para sincronizar los esquemas de la base de datos:


Al finalizar, se generará un script en una nueva ventana:



Este script es el código para transferir los cambios del esquema de la base de datos desde el origen al receptor. Puede usarse en el servidor de destino o guardarse en un archivo para su uso posterior en el servidor de destino. Como regla general, en cualquier caso, este script se guarda para aplicarlo en varios servidores para la misma base de datos después de todas las comprobaciones. Puede hacerlo utilizando grupos de servidores registrados en SSMS enviando el script resultante inmediatamente a todo el grupo de servidores deseado:


Después de la sincronización, los objetos previamente seleccionados deberían desaparecer de la ventana de comparación de circuitos:


Sincronización de datos de base de datos


Se supone que se han creado las conexiones necesarias como se describe anteriormente en "Sincronización de esquema de base de datos".

Después de eso, debe hacer clic en "Nueva comparación de datos" para configurar el proceso de comparación de los datos de la base de datos en el servidor de origen y la base de datos en el servidor de destino:


Aparecerá una ventana de configuración para comparar datos.

En la pestaña "Origen y destino" a la izquierda en el panel Origen, debe seleccionar:
  1. tipo
  2. conexión
  3. base de datos fuente

A la derecha en el panel Objetivo, debe seleccionar:
  1. tipo
  2. conexión
  3. base de datos del receptor

Tenga en cuenta que en el tipo puede seleccionar no solo la base de datos, sino también el directorio del script y la copia de seguridad. En nuestro caso, seleccionamos en el tipo de "base de datos".

Después de seleccionar todas las configuraciones, haga clic en "Siguiente" para continuar configurando la sincronización de los datos de la base de datos.

A diferencia de la comparación de circuitos, al comparar datos, se recomienda que realice todos los pasos de configuración en secuencia.

Si es necesario, puede ir a cualquier pestaña de configuración haciendo clic en el elemento de ventana correspondiente a la izquierda.

En cualquier etapa, puede guardar la configuración como un archivo bat haciendo clic en el botón "Guardar línea de comando" en la parte inferior izquierda de la ventana.

Después de configurar la pestaña "Origen y Destino", haga clic en "Siguiente":


En la pestaña Opciones, puede establecer varias configuraciones o dejarlas de forma predeterminada:


La pestaña "Asignación" proporciona una lista de tablas para la sincronización de datos. Los signos de exclamación indican aquellas tablas en las que no hay una clave primaria. Para tales tablas, la coincidencia debe hacerse manualmente. Para hacer esto, seleccione la fila deseada (tabla) y haga clic derecho en los puntos suspensivos:


Aparecerá la ventana correspondiente:


Después de eso, si es necesario, puede volver a los pasos anteriores.
Al final, haga clic en "Comparar" para comenzar el proceso de comparación de los datos de las bases de datos especificadas:


La ventana de configuración para comparar los datos de la base de datos desaparecerá y aparecerá una ventana con un indicador del progreso de la comparación:


Al final del proceso, preste atención a la ventana. Puede cambiar la configuración de comparación haciendo clic en "Editar comparación" en la esquina superior izquierda de la ventana. A la derecha de este botón hay un círculo con una flecha; este es un botón de actualización que inicia nuevamente el proceso de comparación de datos. También se encuentran a continuación todos los servidores previamente registrados:


A través del menú principal en Archivo, puede guardar la configuración para comparar circuitos como un archivo con la extensión dcomp.

Ahora prestemos atención a la parte central de la ventana. Aquí debe seleccionar los objetos necesarios para la sincronización con las marcas de verificación. A la izquierda están los objetos fuente, y a la derecha, el receptor:


La siguiente información se muestra a continuación:
  1. para filas insertadas - datos de filas insertadas:

  2. para cadenas mutables - comparación de cadenas:

  3. para filas eliminadas: datos de filas eliminadas:


En la parte inferior izquierda, si es necesario, puede seleccionar no todas las líneas para los cambios, sino las que necesita. Por defecto, todas las filas están seleccionadas:


También puede cambiar entre filas que se agregan, cambian y eliminan utilizando las pestañas que se encuentran sobre la tabla de datos:


Para controlar la visibilidad de las columnas (campos) deseadas existe la funcionalidad necesaria:


Por defecto, todas las columnas están seleccionadas.

Luego, para iniciar el proceso de sincronización de datos de la base de datos, haga clic en uno de los botones resaltados en rojo en la imagen:


En la pestaña "Salida", debe especificar cómo ocurrirá el proceso de sincronización. Por lo general, la generación del script se selecciona en el estudio o en un archivo. En nuestro caso, elegiremos la primera opción. Se recomienda que siga cuidadosamente la secuencia de todas las pestañas para configurar el proceso de sincronización:


En la pestaña "Opciones", puede establecer varias configuraciones para la sincronización.

Por lo general, se eliminan todas las configuraciones del grupo de copia de seguridad de la base de datos.

De forma predeterminada, en el grupo de configuración "Transacciones", se configuran "Usar una sola transacción" y "Establecer el nivel de aislamiento de la transacción en SERIALIZABLE", lo que evita situaciones en las que solo se pueden aplicar partes de los cambios, es decir los cambios se aplicarán en su totalidad o en absoluto:


La pestaña Resumen muestra los resultados de la selección de la configuración de sincronización. Si es necesario, puede volver a los párrafos anteriores.

Tenga en cuenta que la configuración para sincronizar los esquemas de la base de datos también se puede guardar en un archivo bat haciendo clic en "Guardar línea de comando" en la parte inferior izquierda de la ventana.

Al final, debe hacer clic en "Sincronizar" para comenzar el proceso de generar un script de sincronización:


Al finalizar, se generará un script en una nueva ventana:



Este script es el código para transferir cambios de datos desde la fuente al receptor. Puede aplicarse en el servidor-receptor o guardarse en un archivo para su uso posterior en el servidor-receptor.

Después de la sincronización, los objetos previamente seleccionados deberían desaparecer de la ventana de comparación de datos.

DbForge Compare Bundle para SQL Server de un vistazo


Además de dbForge Studio para SQL Server, puede usar la herramienta dbForge Compare Bungle para SQL Server de Devart, que está integrada en SQL Server Management Studio (SSMS), para comparar datos y esquemas de bases de datos. Considere un ejemplo de uso de esta herramienta en SSMS:


Aquí debe hacer clic con el botón derecho en la base de datos deseada y seleccionar la acción deseada: comparación de datos o comparación de esquemas. Después de eso, instale la base de datos seleccionada como fuente o como receptor. Del mismo modo, seleccione la segunda base de datos como receptor o como fuente.

Después de configurar la fuente y el receptor, para iniciar la configuración de la sincronización de datos o el esquema de la base de datos, haga clic en la flecha verde en el centro de la pantalla:


Después de eso, aparecerá la ventana familiar para configurar la sincronización de datos o los esquemas de la base de datos, según lo que se haya seleccionado previamente.

Quest Software Solutions


Las herramientas ApexSQL Diff y ApexData Diff de Quest Software están integradas en SSMS .
Además, estas herramientas pueden funcionar de forma independiente y sin SSMS .
Descripción detallada de las soluciones de software de Quest

Sincronización de esquema de base de datos


En el menú principal, para iniciar la herramienta, simplemente seleccione ApexSQL \ ApexSQL Diff \ Launch:


En la ventana que aparece, haga clic en el botón "Nuevo" a continuación:


Se abre la ventana de opciones de comparación del esquema de la base de datos. Ahora debe completar los campos obligatorios en la pestaña "Fuentes de datos":


Presta atención a las flechas a continuación. Le permiten intercambiar configuraciones de izquierda a derecha y de derecha a izquierda, así como copiar configuraciones de izquierda a derecha y de derecha a izquierda. A continuación, haga clic en la pestaña "Opciones" y seleccione la configuración necesaria para comparar los esquemas de la base de datos (no puede cambiar nada):


Ahora debe ir a la pestaña "Opciones avanzadas" y ver la configuración avanzada, que se puede cambiar si es necesario. La pestaña "Mapeo de esquema" contiene una comparación de mapas para comparación:


También hay una serie de otras configuraciones avanzadas:
  1. configuración avanzada de la pestaña Filtro de objetos:
  2. configuración avanzada de la pestaña "Paquete":
  3. Configuración avanzada de la pestaña Scripts adicionales:

Al final, debe hacer clic en el botón "Comparar" para comenzar el proceso de comparación de esquemas de bases de datos. Al final, aparecerá una ventana donde se ubicarán los objetos del esquema de la base de datos de origen a la izquierda y los objetos de la base de datos del receptor a la derecha:


En la parte inferior de la ventana se encuentra el código de definición para el objeto seleccionado, y se resaltan las diferencias en los códigos de definición del mismo objeto en diferentes bases de datos.

Aquí debe seleccionar los objetos necesarios para sincronizar los esquemas de la base de datos.
Después de eso, debe hacer clic en el botón con la imagen de la flecha verde "Sincronizar".

Se abrirá la ventana de configuración para la sincronización de la base de datos.
En la pestaña "Dirección de sincronización" establece la dirección de sincronización.
A continuación, haga clic en el botón "Siguiente":


La pestaña Dependencias muestra las dependencias:


En la pestaña "Opciones de salida" indica que necesita generar un script de sincronización:


La pestaña Resumen y advertencias muestra información resumida sobre la configuración de sincronización seleccionada. Para comenzar a crear una secuencia de comandos de sincronización, haga clic en el botón "Crear secuencia de comandos":


Al final, se mostrará el script:


:


«View» .


«Resources» , . «Home». SSIS-:


:


:



ApexSQL\ApexSQL Data Diff\Launch:


“New”:


. «Data sources»:


. , .

«Options» ( ):


«Advanced options» , . , . «Object mapping»:


, .

«Compare» :


:


, , . , , — .

, . «Synchronize».

.

«Synchronization direction» .

, «Next»:


«Output options» , :


«Summary and warnings» . «Create script»:


:


, :


«View» .


«Resources» , .

«Home».

:


:


Soluciones RedGate


Ahora veamos las herramientas SQL Compare y SQL Data Compare de RedGate .
Descripción general de la solución RedGate


SQL Compare RedGate . «Data sources» :


, , , , -. :


«Table mapping» :


«Full» , , :


«Owner mapping» :


«Options» :


«Compare now» . «OK»:


, ( ApexSQL Diff) , :


, «Deploy»:
:


.

«Deployment method» .

«Next»:


, :



SQL Data Compare RedGate . «Data sources» :


, , , , -.

:


«Table & views» :


«columns» , , :


«Owner mapping» :


«Options» :


«Compare now» . «OK»:


, ( ApexSQL Data Diff) , :


, «Deploy»:


.

«Deployment method» .

«Next»:


, :


Comparación de precio y funcionalidad.


Producto1 licencia10 licenciasAl comprar dos productos a la vez
ApexSQL diff599 $359 $Se hace personalmente y puede costar $ 539 por dos productos por licencia para la compra de 10 licencias.
Diferencia de datos ApexSQL599 $359 $Se hace personalmente y puede costar $ 539 por dos productos por licencia para la compra de 10 licencias.
Comparación SQL785 $785 $Puede proporcionarse personalmente, pero con la compra de más de 10 licencias
Comparación de datos SQL785 $785 $Puede proporcionarse personalmente, pero con la compra de más de 10 licencias
Comparación del esquema dbForge para SQL Server300 $300 $$ 400 por dos productos por 1 licencia
Comparación de datos de dbForge para SQL Server300 $300 $$ 400 por dos productos por 1 licencia

También vale la pena señalar la siguiente funcionalidad de las herramientas discutidas anteriormente:
  1. La fuente de comparación puede ser:
    • una base de datos
    • instantánea
    • carpeta de script
    • copia de seguridad
    • sistema de control de versiones
  2. puedes trabajar con estas herramientas a través de la línea de comando
  3. la sincronización se puede realizar directamente o se puede guardar un script de sincronización para su posterior ejecución. También puede guardar como un archivo bat

El sitio web oficial de la herramienta ApexSQL Diff proporciona una comparación de este programa con la herramienta SQL Compare.

De manera similar, para la herramienta ApexSQL Data Diff , se proporciona una comparación con la herramienta SQL Data Compare.

De las comparaciones anteriores es fácil ver que hay algo en ApexSQL, que no está en Comparar, y algo por el contrario está en Comparar, pero no en ApexSQL. Pero todas las utilidades consideradas tienen el conjunto necesario de funcionalidades básicas para comparar tanto los esquemas como los datos de la base de datos.

En términos de funcionalidad y precio, teniendo en cuenta los descuentos y el material discutido anteriormente, los productos ApexSQL Diff y ApexSQL Data Diff son la mejor opción.

Conclusión


Se consideraron utilidades populares para sincronizar esquemas y datos de bases de datos:
  1. Comparación del esquema dbForge para SQL Server por Devart
  2. Comparación de datos dbForge para SQL Server por Devart
  3. Quest Software ApexSQL Diff
  4. Diferencia de datos ApexSQL de Quest Software
  5. RedGate SQL Compare
  6. RedGate SQL Data Compare


También se realizó una breve comparación sobre el precio y la funcionalidad de estos productos.

El resultado de la revisión fue la conclusión de que la mejor opción en precio y funcionalidad son ApexSQL Diff y ApexSQL Data Diff de Quest Software. Sin embargo, la funcionalidad básica necesaria está suficientemente disponible en los productos Devart: dbForge Schema Compare para SQL Server y dbForge Data Compare para SQL Server. Estos productos se pueden comprar mucho más baratos que sus contrapartes ApexSQL Diff y ApexSQL Data Diff de Quest Software.

Existen soluciones similares para Oracle DBMS.

¿Y qué comparadores lo ayudan y para qué DBMS comparan esquemas y datos de bases de datos?

Después de las discusiones


Además, los colegas en los comentarios y en la correspondencia recomendaron los siguientes comparadores interesantes:
  1. para comparar esquemas y datos de bases de datos de diferentes DBMS
  2. Para migrar de MS SQL Server a PostgreSQL:
  3. para comparar esquemas de bases de datos y datos de bases de datos para MS SQL Server
  4. para cambiar de un DBMS a otro DBMS y para comparar esquemas y datos de bases de datos de diferentes DBMS . La herramienta simétrica también es muy buena.
  5. para transferir una base de datos Jira de MS SQL Server DBMS a PostgreSQL DBMS


Fuentes


Source: https://habr.com/ru/post/465753/


All Articles