Cómo sincronizar automáticamente múltiples bases de datos en diferentes instancias de SQL Server

En este artículo, compartimos una guía paso a paso sobre cómo comparar el esquema y los datos de varias bases de datos de SQL Server desde la línea de comandos.

Tanto dbForge Schema Compare para SQL Server como dbForge Data Compare para SQL Server admiten una interfaz de línea de comandos que brinda al usuario un amplio control sobre las herramientas y les permite automatizar y programar tareas periódicas de comparación y sincronización de bases de datos.

Como desarrollador de DBA o SQL Server, puede encontrar situaciones en las que necesite comparar esquemas y/o datos en más de dos bases de datos y sincronizar rápidamente dos o más bases de datos de SQL Server. ¿Puedes hacerlo todo a la vez y ahorrar mucho tiempo y esfuerzo? Vamos a revisar.

Paso 1. Cree un archivo de texto con una lista de bases de datos y servidores de origen y de destino

1.1 Ejecute cualquier editor de texto de terceros, como el Bloc de notas.

1.2 Introduzca los nombres de los servidores y bases de datos de origen, separados por comas. Aquí puede escribir tantos servidores y bases de datos como necesite. La siguiente es una plantilla para la siguiente lista:

Source_server_name1, Source_database_name1

Source_server_name2, Source_database_name2

Source_server_name3, Source_database_name3

...

Source_server_nameN, Source_database_nameN

En este ejemplo de trabajo vamos a utilizar como fuente las siguientes bases de datos en los siguientes servidores:

DBFSQLSRVSQL2016, AdventureWorks2019_Dev
DBFSQLSRVSQL2016, BicycleStoreDev
DBFSQLSRVSQL2016, BicycleStoreDev1

1.3 Guarde el archivo. Guardaremos un archivo llamado Source_Databases.txt.

1.4 Para crear una multidifusión, repita el paso anterior para los servidores y bases de datos de destino ingresando sus nombres separados por comas de acuerdo con la plantilla:

Target_server_name1, Target_database_name1

Target_server_name2, Target_database_name2

Target_server_name3, Target_database_name3

...

Target_server_nameN, Target_database_nameN

En este ejemplo práctico, vamos a utilizar como destino las siguientes bases de datos en los siguientes servidores:

DBFSQLSRVSQL2019, AdventureWorks2019_Test
DBFSQLSRVSQL2019, BicycleStoreDev
DBFSQLSRVSQL2019, BicycleStoreDev1

1.5 Guarde el archivo. Guardaremos un archivo llamado Target_Databases.txt.

Paso 2. Crea un archivo .bat

2.1 Ejecute cualquier editor de texto de terceros, como el Bloc de notas.

2.2 Ingrese un script para comparar bases de datos como en los ejemplos a continuación. No olvide personalizar el script según sus necesidades.

Script para comparar múltiples esquemas de bases de datos desde la línea de comando:

Set Compare="C:Program FilesDevartCompare Bundle for SQL Server ProfessionaldbForge Data Compare for SQL Serverschemacompare.com"

FOR /F "eol=; tokens=1,2* delims=, " %%e in (Source_Databases.txt) do (

FOR /F "eol=; tokens=1,2* delims=, " %%g in (Target_Databases.txt) do (

%compare% /schemacompare /source connection:"Data Source=%%e;Encrypt=False;Enlist=False;Initial Catalog=%%f;Integrated Security=False;User ID=sa;Pooling=False;Transaction Scope Local=True" /target connection:"Data Source=%%g;Encrypt=False;Enlist=False;Initial Catalog=%%h;Integrated Security=False;User ID=sa;Pooling=False;Transaction Scope Local=True" /log:"C:log_filesdc_log.log"

)

)

pause

Script para comparar datos de múltiples bases de datos desde la línea de comando:

Set Compare="C:Program FilesDevartCompare Bundle for SQL Server ProfessionaldbForge Data Compare for SQL Serverdatacompare.com"

FOR /F "eol=; tokens=1,2* delims=, " %%e in (Source_Databases.txt) do (

FOR /F "eol=; tokens=1,2* delims=, " %%g in (Target_Databases.txt) do (

%compare% /datacompare /source connection:"Data Source=%%e;Encrypt=False;Enlist=False;Initial Catalog=%%f;Integrated Security=False;User ID=sa;Pooling=False;Transaction Scope Local=True" /target connection:"Data Source=%%g;Encrypt=False;Enlist=False;Initial Catalog=%%h;Integrated Security=False;User ID=sa;Pooling=False;Transaction Scope Local=True" /log:"D:dc_log.log"

)

)

pause

Donde:
Source_Databases.txt es el nombre de un archivo con una lista de servidores y bases de datos de origen.
Target_Databases.txt es el nombre de un archivo con una lista de servidores y bases de datos de origen.
D:dc_log.log es la ruta al archivo donde se guardará el resultado.

Nota: Set Compare es la ruta de instalación predeterminada para dbForge Data Compare y dbForge Schema Compare. Sin embargo, si lo cambió, también deberá especificar la ruta correcta al archivo .com de la herramienta requerida.

2.3 Guarde el guión.

Paso 3. Compare las bases de datos de origen y de destino a través de la línea de comando

Ahora todo lo que necesita hacer es ejecutar el archivo .bat a través de la línea de comando.

Primero, ejecutemos un archivo .bat para comparar esquemas en nuestro conjunto de bases de datos.

Ahora ejecutemos un archivo .bat para comparar los datos en nuestras bases de datos.

Obtendrá instantáneamente resultados resumidos de la comparación: las bases de datos de origen y de destino son las mismas o no, cuántos registros diferentes o en conflicto existen, etc. El archivo de salida se creará al completar con éxito el proceso.

Conclusión

Las herramientas dbForge Schema Compare y dbForge Data Compare incluyen una interfaz de línea de comandos (CLI) para comparar esquemas e implementar bases de datos de SQL Server desde la línea de comandos, lo que le permite sincronizar varias bases de datos. Este artículo proporciona ejemplos de secuencias de comandos de la CLI para comparar esquemas y datos de SQL Server en varias bases de datos. Prueba este script y verás lo fácil que es sincronizar dos bases de datos en diferentes servidores.

Artículos de interés

Subir