Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server

Синхронизация схем баз данных


После открытия студии, перейдите на вкладку «Database Sync» и создайте новое подключение, нажав по кнопке «New Connection»:
pdyj7cmwxp-dpkr2mnztczz478k.png

В открывшемся окне настроек подключения необходимо ввести необходимые данные для подключения к экземпляру MS SQL Server (серверу-источнику). Обратите внимание, что помимо аутентификации MS SQL Server, Windows, Active Directory, появилась возможность аутентификации через MFA. После заполнения всех необходимых полей, нажмите на кнопку «Test Connection» для проверки соединения:
abyy9hbz-n4j98pxjujazwsk9sw.jpeg

После установки соединения будет выведено следующее диалоговое окно:
23lomzh8btddlpnhjbkpthfxy_c.png

Далее нажмите на кнопку «ОК» в диалоговом окне и на такую же кнопку в окне настроек подключения.

Теперь появилось новое подключение:
v7zjusbadqcwtpsqttmqgd9sg5y.png

Аналогичным образом необходимо подключить все нужные экземпляры MS SQL Server (в данном примере нужно создать подключение для сервера-приемника).

После этого необходимо нажать на «New Schema Comparison» для настройки процесса сравнения схем базы данных на сервере-источнике и базы данных на сервере-приемнике:
fjkahscbbmnxiphhoitmkm2akbi.png

Появится окно настроек для сравнения схем.

На вкладке «Source and Target» слева в панели Source необходимо выбрать:

  1. тип
  2. подключение
  3. базу данных источника


Справа в панели Target необходимо выбрать:

  1. тип
  2. подключение
  3. базу данных приемника


Обратите внимание, что в типе можно выбрать не только базу данных, но также каталог скриптов, снимок, контроль версий и резервную копию. В нашем случае выбираем в типе «база данных».

После выбора всех настроек необходимо нажать на кнопку «Next» для продолжения настройки синхронизации схем баз данных.

Если сравниваются две изначально одинаковые базы данных, то можно сразу приступать к сравнению схем, нажав на кнопку «Compare».

При необходимости можно перейти к любой вкладке настроек, кликнув на соответствующий элемент слева окна.

На любом этапе можно сохранить настройки в виде bat-файла, нажав на кнопку «Save Command Line» слева внизу окна.

В большинстве случаев при накатывании изменений между изначально одинаковыми базами данных, достаточно сразу нажать на кнопку «Compare». Но для исследования функционала необходимо нажать «Next»:
rmr3kxqkgteqphkxnphtoxjaehy.jpeg

Во вкладке «Options» можно выставить различные настройки или оставить их по умолчанию:
ml2g-hfa0u0mjhwrvv_pg5nutls.jpeg

Во вкладке «Schema Mapping» можно настроить сопоставление схем по имени:
ywtd1ezluavpln5wt8kgk8okrlu.jpeg

Во вкладке «Table Mapping» можно настроить сопоставление таблиц и столбцов:
4ujihyiredonpvxceejjhrmwcru.jpeg

Во вкладке «Object Filter» можно задать объекты для сравнения.

После этого, при необходимости можно вернуться к предыдущим шагам.

В конце необходимо нажать на кнопку «Compare» для запуска процесса сравнения схем заданных баз данных:
pkrmegzzgj-9ucsld4fred8i54u.jpeg

Окно настроек сравнения схем баз данных исчезнет, и появится окно с индикатором процесса выполнения сравнения:
lunye2ncwhuxeyub_fefejuo53u.png

В конце процесса обратите внимание на окно. Можно изменить настройки сравнения, нажав на кнопку «Edit Comparison» в левом верхнем углу окна. Справа от этой кнопки располагается круг со стрелкой — это кнопка обновления, которая запускает вновь процесс сравнения схем. Также чуть ниже располагаются все зарегистрированные ранее сервера:
ejl28y5x61i0p_sudjusvkjbgpm.png

Через главное меню в File можно сохранить настройки сравнения схем в виде файла с расширением scomp.

Теперь обратим внимание на центральную часть окна. Здесь галочками нужно выбрать необходимые объекты для синхронизации. Слева располагаются объекты источника, а справа-приемника. Внизу аналогичным образом располагается код определения объектов. Объекты для сравнения разделены на 4 секции с подсчетом количества этих объектов в каждой секции.
Здесь выбрана для просмотра кода определения таблица, которая есть и в источнике, и в приемнике. Поэтому данный объект находится в секции «Different»:
mvsbgltvfdwkxh4l8lp01fxwrw8.png

При выборе данного объекта, его код определения слева будет перенесен вправо при синхронизации схем баз данных для приемника.
Здесь для просмотра кода определения выбрано представление, которое есть только в источнике. Поэтому данный объект находится в секции «Only in source» и справа для него нет кода определения:
gp9tadrirawn-dukt6h0j4ljjcu.png

При выборе такого объекта, его код создания будет сгенерирован для приемника.
Здесь для просмотра кода определения выбрано представление, которое есть только в приемнике. Поэтому данный объект находится в секции «Only in target» и слева для него нет кода определения:
lmxelr4kofkpbihz6ldotzw9tfo.png

При выборе такого объекта, его код удаления будет сгенерирован для приемника.
Далее, для запуска самого процесса синхронизации схем баз данных необходимо нажать на одну из кнопок, выделенных красным на картинке:
u06bljxoxobkdajxifvogdhnyqo.jpeg

Во вкладке «Output» необходимо указать, как будет происходить процесс синхронизации. Обычно выбирается генерация скрипта в студию или в файл. В нашем случае выберем первый вариант. Рекомендуется внимательно проходить последовательность всех вкладок по настройке процесса синхронизации:
z_prkrvzsnj7uzndtovmoni146g.jpeg

Во вкладке «Options» можно задать различные настройки для синхронизации схем баз данных.
Обычно убираются все настройки из группы «Database backup».
По умолчанию в группе настроек «Transactions» выставлено «Use a single transaction» и «Set transaction isolation level to SERIALIZABLE», что предотвращает ситуации, в которых могут быть применены только части изменений — т.е. изменения будут применяться полностью либо не применяться вовсе:
qtzdppif8db51i2gmtqvx1hcmrw.jpeg

Во вкладке «Summary» отображаются итоги выбора настроек синхронизации. При необходимости можно вернуться к предыдущим пунктам.
Обратите внимание, что настройки по синхронизации схем баз данных также можно сохранить в bat-файл, нажав на кнопку «Save Command Line» слева внизу окна.
В конце необходимо нажать на кнопку «Synchronize» для начала процесса генерации скрипта синхронизации схем баз данных:
5zx9tjgbyd0jysgnvs1uiufrht0.jpeg

По завершению, будет сгенерирован скрипт в новое окно:
fe1dczalbpi59qwicnieaortgv8.jpeg
anmrcyks_gekgcctl_ascpgpaiq.jpeg

Данный скрипт и есть код для переноса изменений схемы базы данных с источника на приемник. Его можно применить на сервере-приемнике или сохранить в файл для последующего применения на сервере-приемнике. Как правило, в любом случае данный скрипт сохраняют, чтобы после всех проверок применить его сразу на нескольких серверах для одной и той же базы данных. Сделать это можно с помощью групп зарегистрированных серверов в SSMS, отправив получившийся скрипт сразу на всю нужную группу серверов:
z23o8jbbncbujvy0t4sakx0_lu4.png

После синхронизации, выбранные ранее объекты, должны исчезнуть из окна сравнения схем:
1seao0lk-rslytkt0-e-x2vnz0k.png

Синхронизация данных баз данных


Предполагается, что были созданы нужные подключения как описывалось выше в «Синхронизация схем баз данных».

После этого необходимо нажать «New Data Comparison» для настройки процесса сравнения данных базы данных на сервере — источнике и базы данных на сервере — приемнике:
rr5ovi83rv6hylbrdmn5diegjw8.png

Появится окно настроек для сравнения данных.

На вкладке «Source and Target» слева в панели Source необходимо выбрать:

  1. тип
  2. подключение
  3. базу данных источника


Справа в панели Target необходимо выбрать:

  1. тип
  2. подключение
  3. базу данных приемника


Обратите внимание, что в типе можно выбрать не только базу данных, но также каталог скриптов и резервную копию. В нашем случае выбираем в типе «база данных».

После выбора всех настроек необходимо нажать «Next» для продолжения настройки синхронизации данных баз данных.

В отличие от сравнения схем, при сравнении данных рекомендуется пройти все шаги настроек последовательно.

При необходимости можно перейти к любой вкладке настроек, кликнув на соответствующий элемент окна слева.

На любом этапе можно сохранить настройки в виде bat — файла, нажав «Save Command Line» слева внизу окна.

После настройки вкладки «Source and Target» необходимо нажать «Next»:
0m6iab-8vjym0nlxnwurmumcff8.png

Во вкладке «Options» можно выставить различные настройки или оставить их по умолчанию:
a1kwdqutwuodkszmkqelrmwydtm.png

Во вкладке «Mapping» дается список таблиц для синхронизации данных. Восклицательными знаками отмечены те таблицы, в которых нет первичного ключа. Для таких таблиц сопоставление нужно делать вручную. Для этого выберите нужную строку (таблицу) и справа нажмите на многоточие:
o8zhutbwdclg_wp42a_96gzgpic.png

Появится окно сопоставления:
wus3uatcti4azbkorbhiivvggsc.png

После этого при необходимости можно вернуться к предыдущим шагам.
В конце необходимо нажать «Compare» для запуска процесса сравнения данных заданных баз данных:
qcfozghgvhpx-_gvgj1_bgh9iyk.png

Окно настроек сравнения данных баз данных исчезнет и появится окно с индикатором процесса выполнения сравнения:
ira6tdmsvl6aft2_ojudgxf-pg0.png

В конце процесса обратите внимание на окно. Можно изменить настройки сравнения, нажав «Edit Comparison» в левом верхнем углу окна. Справа от этой кнопки располагается круг со стрелкой — это кнопка обновления, которая запускает процесс сравнения данных вновь. Также чуть ниже располагаются все зарегистрированные ранее сервера:
f-kiyf6z3rywls5zqor8rbbcvvy.png

Через главное меню в File можно сохранить настройки сравнения схем в виде файла с расширением dcomp.

Теперь обратим внимание на центральную часть окна. Здесь галочками нужно выбрать необходимые объекты для синхронизации. Слева располагаются объекты источника, а справа — приемника:
vdtiwwi5sqkz6cnkccbzd3oivsm.png

Внизу отображается следующая информация:

  1. для вставляемых строк — данные вставляемых строк:
    cpx-agzei0bj6rbmbnmktqczxqk.png
  2. для изменяемых строк — сравнение строк:
    vtyj_ssqlgyzsdjnbo-izt7solq.png
  3. для удаляемых строк — данные удаляемых строк:
    creylcodozlt7dzh5qgzrthjzd0.png


Внизу слева при необходимости можно выбрать не все строки для изменений, а нужные. По умолчанию выбираются все строки:
hksgvfbce7qilni5ogvephiobjw.png

Также можно переходить между добавляемыми, изменяемыми и удаляемыми строками с помощью вкладок над самой таблицей данных:
wfhvc5powfnbdrjtigchdvltuua.png

Для управления видимостью нужных столбцов (полей) есть необходимый функционал:
ps4quyplv9wxwbjatqs4zqyptvy.png

По умолчанию выбраны все столбцы.

Далее для запуска самого процесса синхронизации данных баз данных необходимо нажать на одну из кнопок, выделенных красным на картинке:
yucl_-safv2v9fu1zmwdgmkklbk.png

Во вкладке «Output» необходимо указать, как будет происходить процесс синхронизации. Обычно выбирается генерация скрипта в студию или в файл. В нашем случае выберем первый вариант. Рекомендуется внимательно проходить последовательность всех вкладок по настройке процесса синхронизации:
gtpqu2qrzvjevzthq9db--voyzq.png

Во вкладке «Options» можно задать различные настройки для синхронизации.

Обычно убираются все настройки из группы «Database backup».

По умолчанию в группе настроек «Transactions» выставлено «Use a single transaction» и «Set transaction isolation level to SERIALIZABLE», что предотвращает ситуации, в которых могут быть применены только части изменений — т.е. изменения будут применяться полностью либо не применяться вовсе:
lcj9uozcx1lokemrazt4rnoys8u.png

Во вкладке «Summary» отображаются итоги выбора настроек синхронизации. При необходимости можно вернуться к предыдущим пунктам.

Обратите внимание, что настройки по синхронизации схем баз данных также можно сохранить в bat — файл, нажав «Save Command Line» слева внизу окна.

В конце необходимо нажать «Synchronize» для начала процесса генерации скрипта синхронизации:
bnbyocyi7dcv33fcf9_z9pzrxvi.png

По завершении будет сгенерирован скрипт в новое окно:
ewtuz6p3h5l_wwdoju8fvkaxur0.png
jdeepuwnx4n_k_5tsiijq6jw7ca.png

Данный скрипт и есть код для переноса изменений данных с источника на приемник. Его можно применить на сервере — приемнике или сохранить в файл для последующего применения на сервере — приемнике.

После синхронизации выбранные ранее объекты должны исчезнуть из окна сравнения данных.

Краткий обзор инструмента dbForge Compare Bundle for SQL Server


Помимо самой dbForge Studio for SQL Server для сравнения данных и схем баз данных можно использовать инструмент dbForge Compare Bungle for SQL Server от компании Devart, который встраивается в SQL Server Management Studio (SSMS). Рассмотрим пример использования данного инструмента в SSMS:
ckdu6pkwd0aeezzksbvvpvs4sua.png

Здесь нужно нажать правой кнопкой мыши на нужную базу данных и выбрать необходимое действие: сравнение данных или сравнение схемы. После этого установить выбранную базу данных как источник или как приемник. Аналогичным образом выбрать вторую базу данных как приемник или как источник.

После установки источника и приемника для начала настройки синхронизации данных или схемы баз данных необходимо нажать на зеленую стрелку посередине экрана:
bvx7uja4o37ntj4k5enhfw-ybfg.png

После этого появится привычное окно настроек синхронизации данных или схем баз данных в зависимости от того, что было выбрано ранее.

© Habrahabr.ru