Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server
Синхронизация схем баз данных
После открытия студии, перейдите на вкладку «Database Sync» и создайте новое подключение, нажав по кнопке «New Connection»:
В открывшемся окне настроек подключения необходимо ввести необходимые данные для подключения к экземпляру MS SQL Server (серверу-источнику). Обратите внимание, что помимо аутентификации MS SQL Server, Windows, Active Directory, появилась возможность аутентификации через MFA. После заполнения всех необходимых полей, нажмите на кнопку «Test Connection» для проверки соединения:
После установки соединения будет выведено следующее диалоговое окно:
Далее нажмите на кнопку «ОК» в диалоговом окне и на такую же кнопку в окне настроек подключения.
Теперь появилось новое подключение:
Аналогичным образом необходимо подключить все нужные экземпляры MS SQL Server (в данном примере нужно создать подключение для сервера-приемника).
После этого необходимо нажать на «New Schema Comparison» для настройки процесса сравнения схем базы данных на сервере-источнике и базы данных на сервере-приемнике:
Появится окно настроек для сравнения схем.
На вкладке «Source and Target» слева в панели Source необходимо выбрать:
- тип
- подключение
- базу данных источника
Справа в панели Target необходимо выбрать:
- тип
- подключение
- базу данных приемника
Обратите внимание, что в типе можно выбрать не только базу данных, но также каталог скриптов, снимок, контроль версий и резервную копию. В нашем случае выбираем в типе «база данных».
После выбора всех настроек необходимо нажать на кнопку «Next» для продолжения настройки синхронизации схем баз данных.
Если сравниваются две изначально одинаковые базы данных, то можно сразу приступать к сравнению схем, нажав на кнопку «Compare».
При необходимости можно перейти к любой вкладке настроек, кликнув на соответствующий элемент слева окна.
На любом этапе можно сохранить настройки в виде bat-файла, нажав на кнопку «Save Command Line» слева внизу окна.
В большинстве случаев при накатывании изменений между изначально одинаковыми базами данных, достаточно сразу нажать на кнопку «Compare». Но для исследования функционала необходимо нажать «Next»:
Во вкладке «Options» можно выставить различные настройки или оставить их по умолчанию:
Во вкладке «Schema Mapping» можно настроить сопоставление схем по имени:
Во вкладке «Table Mapping» можно настроить сопоставление таблиц и столбцов:
Во вкладке «Object Filter» можно задать объекты для сравнения.
После этого, при необходимости можно вернуться к предыдущим шагам.
В конце необходимо нажать на кнопку «Compare» для запуска процесса сравнения схем заданных баз данных:
Окно настроек сравнения схем баз данных исчезнет, и появится окно с индикатором процесса выполнения сравнения:
В конце процесса обратите внимание на окно. Можно изменить настройки сравнения, нажав на кнопку «Edit Comparison» в левом верхнем углу окна. Справа от этой кнопки располагается круг со стрелкой — это кнопка обновления, которая запускает вновь процесс сравнения схем. Также чуть ниже располагаются все зарегистрированные ранее сервера:
Через главное меню в File можно сохранить настройки сравнения схем в виде файла с расширением scomp.
Теперь обратим внимание на центральную часть окна. Здесь галочками нужно выбрать необходимые объекты для синхронизации. Слева располагаются объекты источника, а справа-приемника. Внизу аналогичным образом располагается код определения объектов. Объекты для сравнения разделены на 4 секции с подсчетом количества этих объектов в каждой секции.
Здесь выбрана для просмотра кода определения таблица, которая есть и в источнике, и в приемнике. Поэтому данный объект находится в секции «Different»:
При выборе данного объекта, его код определения слева будет перенесен вправо при синхронизации схем баз данных для приемника.
Здесь для просмотра кода определения выбрано представление, которое есть только в источнике. Поэтому данный объект находится в секции «Only in source» и справа для него нет кода определения:
При выборе такого объекта, его код создания будет сгенерирован для приемника.
Здесь для просмотра кода определения выбрано представление, которое есть только в приемнике. Поэтому данный объект находится в секции «Only in target» и слева для него нет кода определения:
При выборе такого объекта, его код удаления будет сгенерирован для приемника.
Далее, для запуска самого процесса синхронизации схем баз данных необходимо нажать на одну из кнопок, выделенных красным на картинке:
Во вкладке «Output» необходимо указать, как будет происходить процесс синхронизации. Обычно выбирается генерация скрипта в студию или в файл. В нашем случае выберем первый вариант. Рекомендуется внимательно проходить последовательность всех вкладок по настройке процесса синхронизации:
Во вкладке «Options» можно задать различные настройки для синхронизации схем баз данных.
Обычно убираются все настройки из группы «Database backup».
По умолчанию в группе настроек «Transactions» выставлено «Use a single transaction» и «Set transaction isolation level to SERIALIZABLE», что предотвращает ситуации, в которых могут быть применены только части изменений — т.е. изменения будут применяться полностью либо не применяться вовсе:
Во вкладке «Summary» отображаются итоги выбора настроек синхронизации. При необходимости можно вернуться к предыдущим пунктам.
Обратите внимание, что настройки по синхронизации схем баз данных также можно сохранить в bat-файл, нажав на кнопку «Save Command Line» слева внизу окна.
В конце необходимо нажать на кнопку «Synchronize» для начала процесса генерации скрипта синхронизации схем баз данных:
По завершению, будет сгенерирован скрипт в новое окно:
Данный скрипт и есть код для переноса изменений схемы базы данных с источника на приемник. Его можно применить на сервере-приемнике или сохранить в файл для последующего применения на сервере-приемнике. Как правило, в любом случае данный скрипт сохраняют, чтобы после всех проверок применить его сразу на нескольких серверах для одной и той же базы данных. Сделать это можно с помощью групп зарегистрированных серверов в SSMS, отправив получившийся скрипт сразу на всю нужную группу серверов:
После синхронизации, выбранные ранее объекты, должны исчезнуть из окна сравнения схем:
Синхронизация данных баз данных
Предполагается, что были созданы нужные подключения как описывалось выше в «Синхронизация схем баз данных».
После этого необходимо нажать «New Data Comparison» для настройки процесса сравнения данных базы данных на сервере — источнике и базы данных на сервере — приемнике:
Появится окно настроек для сравнения данных.
На вкладке «Source and Target» слева в панели Source необходимо выбрать:
- тип
- подключение
- базу данных источника
Справа в панели Target необходимо выбрать:
- тип
- подключение
- базу данных приемника
Обратите внимание, что в типе можно выбрать не только базу данных, но также каталог скриптов и резервную копию. В нашем случае выбираем в типе «база данных».
После выбора всех настроек необходимо нажать «Next» для продолжения настройки синхронизации данных баз данных.
В отличие от сравнения схем, при сравнении данных рекомендуется пройти все шаги настроек последовательно.
При необходимости можно перейти к любой вкладке настроек, кликнув на соответствующий элемент окна слева.
На любом этапе можно сохранить настройки в виде bat — файла, нажав «Save Command Line» слева внизу окна.
После настройки вкладки «Source and Target» необходимо нажать «Next»:
Во вкладке «Options» можно выставить различные настройки или оставить их по умолчанию:
Во вкладке «Mapping» дается список таблиц для синхронизации данных. Восклицательными знаками отмечены те таблицы, в которых нет первичного ключа. Для таких таблиц сопоставление нужно делать вручную. Для этого выберите нужную строку (таблицу) и справа нажмите на многоточие:
Появится окно сопоставления:
После этого при необходимости можно вернуться к предыдущим шагам.
В конце необходимо нажать «Compare» для запуска процесса сравнения данных заданных баз данных:
Окно настроек сравнения данных баз данных исчезнет и появится окно с индикатором процесса выполнения сравнения:
В конце процесса обратите внимание на окно. Можно изменить настройки сравнения, нажав «Edit Comparison» в левом верхнем углу окна. Справа от этой кнопки располагается круг со стрелкой — это кнопка обновления, которая запускает процесс сравнения данных вновь. Также чуть ниже располагаются все зарегистрированные ранее сервера:
Через главное меню в File можно сохранить настройки сравнения схем в виде файла с расширением dcomp.
Теперь обратим внимание на центральную часть окна. Здесь галочками нужно выбрать необходимые объекты для синхронизации. Слева располагаются объекты источника, а справа — приемника:
Внизу отображается следующая информация:
- для вставляемых строк — данные вставляемых строк:
- для изменяемых строк — сравнение строк:
- для удаляемых строк — данные удаляемых строк:
Внизу слева при необходимости можно выбрать не все строки для изменений, а нужные. По умолчанию выбираются все строки:
Также можно переходить между добавляемыми, изменяемыми и удаляемыми строками с помощью вкладок над самой таблицей данных:
Для управления видимостью нужных столбцов (полей) есть необходимый функционал:
По умолчанию выбраны все столбцы.
Далее для запуска самого процесса синхронизации данных баз данных необходимо нажать на одну из кнопок, выделенных красным на картинке:
Во вкладке «Output» необходимо указать, как будет происходить процесс синхронизации. Обычно выбирается генерация скрипта в студию или в файл. В нашем случае выберем первый вариант. Рекомендуется внимательно проходить последовательность всех вкладок по настройке процесса синхронизации:
Во вкладке «Options» можно задать различные настройки для синхронизации.
Обычно убираются все настройки из группы «Database backup».
По умолчанию в группе настроек «Transactions» выставлено «Use a single transaction» и «Set transaction isolation level to SERIALIZABLE», что предотвращает ситуации, в которых могут быть применены только части изменений — т.е. изменения будут применяться полностью либо не применяться вовсе:
Во вкладке «Summary» отображаются итоги выбора настроек синхронизации. При необходимости можно вернуться к предыдущим пунктам.
Обратите внимание, что настройки по синхронизации схем баз данных также можно сохранить в bat — файл, нажав «Save Command Line» слева внизу окна.
В конце необходимо нажать «Synchronize» для начала процесса генерации скрипта синхронизации:
По завершении будет сгенерирован скрипт в новое окно:
Данный скрипт и есть код для переноса изменений данных с источника на приемник. Его можно применить на сервере — приемнике или сохранить в файл для последующего применения на сервере — приемнике.
После синхронизации выбранные ранее объекты должны исчезнуть из окна сравнения данных.
Краткий обзор инструмента dbForge Compare Bundle for SQL Server
Помимо самой dbForge Studio for SQL Server для сравнения данных и схем баз данных можно использовать инструмент dbForge Compare Bungle for SQL Server от компании Devart, который встраивается в SQL Server Management Studio (SSMS). Рассмотрим пример использования данного инструмента в SSMS:
Здесь нужно нажать правой кнопкой мыши на нужную базу данных и выбрать необходимое действие: сравнение данных или сравнение схемы. После этого установить выбранную базу данных как источник или как приемник. Аналогичным образом выбрать вторую базу данных как приемник или как источник.
После установки источника и приемника для начала настройки синхронизации данных или схемы баз данных необходимо нажать на зеленую стрелку посередине экрана:
После этого появится привычное окно настроек синхронизации данных или схем баз данных в зависимости от того, что было выбрано ранее.