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

в 11:25, , рубрики: Без рубрики

Описание общей потребности в синхронизации изменений

При работе с базами данных часто приходится решать проблему синхронизации изменений.
Если в компании используется всего одна промышленная среда, то в дополнение к ней требуется как минимум еще одна дополнительная среда для тестирования внесенных изменений. В этом случае возникает необходимость переноса изменений из тестовой среды в промышленную.

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

Как правило, разработку баз данных ведут в специально выделенной среде. Затем изменения переносят в среду тестирования для проведения различных проверок (юнит-тесты, автотесты, нагрузочные тесты и т д). И только после всех этапов разработки и проверок осуществляют перенос изменений в промышленную среду.

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

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

В общем случае, последовательность переноса изменений можно представить следующим образом:

  1. Между средами для разработки.
  2. Из сред для разработки в среды для тестирования.
  3. Между средами для тестирования. В случае внесения изменений, пришедших не из среды разработки в любую из сред для тестирования, такие изменения также переносятся в среду для разработки. Как правило, все изменения должны идти из среды разработки в среду для тестирования, но не наоборот.
  4. Из среды тестирования в предпромышленные среды, где производится сбор изменений для каждой конкретной промышленной среды, проводятся последние интеграционные тесты, а также тесты по откату изменений при заранее указанных инсценированных сбоях.
  5. Из предпромышленной среды в промышленную среду с возможностью быстрого отката внесенных изменений.

Существуют различные инструменты для синхронизации изменений между средами, например:

  1. Visual Studio Comparer
  2. SQL Server Integration Services
  3. dbForge Comparer от компании Devart
  4. ApexSQL от компании Quest Software
  5. Решения от компании RedGate

Обычно с MS SQL Server работают решения, написанные на .NET (например, написанные на C#).

В данной статье будет рассматриваться пример переноса изменений базы данных MS SQL Server с одного сервера на другой с помощью инструментов от компаний Devart, Quest Software и RedGate. В конце будет сделано сравнение данных инструментов.

В данной статье для примеров будем рассматривать базу данных SRV, которая предназначена для обслуживания СУБД MS SQL Server. Скачать ее исходники можно здесь.
Данная база данных SRV распространяется свободно для любых целей.

Решения от компании Devart

Решения от компании Devart для синхронизации баз данных MS SQL Server называются DbForge Data Comparer, DbForge Schema Comparer и dbForge Compare Bundle for SQL Server. Первые два встраиваются в DbForge Studio for MS SQL Server, а третий-непосредственно в SSMS.

Детальный обзор решений от компании Devart

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

После открытия студии, перейдите на вкладку «Database Sync» и создайте новое подключение, нажав по кнопке «New Connection»:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 1

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

После установки соединения будет выведено следующее диалоговое окно:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 3

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

Теперь появилось новое подключение:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 4

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

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

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

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

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

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

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

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

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

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

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

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

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

Во вкладке «Options» можно выставить различные настройки или оставить их по умолчанию:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 7

Во вкладке «Schema Mapping» можно настроить сопоставление схем по имени:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 8

Во вкладке «Table Mapping» можно настроить сопоставление таблиц и столбцов:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 9

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

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

В конце необходимо нажать на кнопку «Compare» для запуска процесса сравнения схем заданных баз данных:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 10

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

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

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

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

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

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

При выборе такого объекта, его код удаления будет сгенерирован для приемника.
Далее, для запуска самого процесса синхронизации схем баз данных необходимо нажать на одну из кнопок, выделенных красным на картинке:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 16

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

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

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

По завершению, будет сгенерирован скрипт в новое окно:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 20
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 21

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

После синхронизации, выбранные ранее объекты, должны исчезнуть из окна сравнения схем:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 23

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

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

После этого необходимо нажать «New Data Comparison» для настройки процесса сравнения данных базы данных на сервере — источнике и базы данных на сервере — приемнике:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 24

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

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

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

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

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

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

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

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

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

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

После настройки вкладки “Source and Target” необходимо нажать «Next»:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 25

Во вкладке «Options» можно выставить различные настройки или оставить их по умолчанию:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 26

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

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

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

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

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

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

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

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

  1. для вставляемых строк — данные вставляемых строк:
    Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 33
  2. для изменяемых строк — сравнение строк:
    Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 34
  3. для удаляемых строк — данные удаляемых строк:
    Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 35

Внизу слева при необходимости можно выбрать не все строки для изменений, а нужные. По умолчанию выбираются все строки:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 36

Также можно переходить между добавляемыми, изменяемыми и удаляемыми строками с помощью вкладок над самой таблицей данных:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 37

Для управления видимостью нужных столбцов (полей) есть необходимый функционал:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 38

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

Далее для запуска самого процесса синхронизации данных баз данных необходимо нажать на одну из кнопок, выделенных красным на картинке:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 39

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

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

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

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

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

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

В конце необходимо нажать «Synchronize» для начала процесса генерации скрипта синхронизации:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 42

По завершении будет сгенерирован скрипт в новое окно:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 43
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 44

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

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

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

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

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

После установки источника и приемника для начала настройки синхронизации данных или схемы баз данных необходимо нажать на зеленую стрелку посередине экрана:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 46

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

Решения от компании Quest Software

Инструменты ApexSQL Diff и ApexData Diff от компании Quest Software встраиваются в SSMS.
Также данные инструменты могут работать самостоятельно и без SSMS.

Детальный обзор решений от компании Quest Software

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

В главном меню для запуска тулзы достаточно выбрать ApexSQLApexSQL DiffLaunch:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 47

В появившемся окне нажмите внизу на кнопку “New”:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 48

Откроется окно параметров сравнения схем баз данных. Теперь необходимо заполнить нужные поля на вкладке «Data sources»:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 49

Обратите внимание на стрелки внизу. Они позволяют менять местами настройки слева направо и справа налево, а также копировать настройки слева направо и справа налево. Далее нажмите на вкладку «Options» и выберите необходимые настройки сравнения схем баз данных (можно ничего не менять):
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 50

Теперь необходимо перейти на вкладку «Advanced options» и просмотреть расширенные настройки, которые при необходимости можно изменить. Вкладка «Schema mapping» содержит сопоставление схем для сравнения:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 51

Также есть и ряд других расширенных настроек:

  1. расширенные настройки вкладки «Object Filter»:
    Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 52
  2. расширенные настройки вкладки «Package»:
    Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 53
  3. расширенные настройки вкладки «Additional scripts»:
    Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 54

В конце необходимо нажать на кнопку «Compare», чтобы запустить процесс сравнения схем баз данных. В конце появится окно, где слева будут располагаться объекты схемы базы данных источника, а справа — объекты базы данных приемника:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 55

Внизу окна располагается код определения выбранного объекта, а также подсвечиваются различия в кодах определения одного и того же объекта в разных базах данных.

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

Откроется окно настроек непосредственно самой синхронизации баз данных.
На вкладке «Synchronization direction» задается направление синхронизации.
Далее, необходимо нажать на кнопку «Next»:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 56

На вкладке «Dependencies» показываются зависимости:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 57

На вкладке «Output options» указываем, что необходимо сгенерировать скрипт синхронизации:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 58

На вкладке «Summary and warnings» отображается итоговая информация по выбранным настройкам синхронизации. Для начала создания скрипта синхронизации необходимо нажать на кнопку «Create script»:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 59

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

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

Вкладка «View» содержит различные настройки по отображению компонентов окна.
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 62

Вкладка «Resources» содержит информацию о продукте, а также ссылки на документацию и центр поддержки пользователей. Теперь разберем вкладку «Home». Само сравнение схем можно выполнить в виде SSIS-пакета:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 63

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

Также есть возможность сформировать отчеты о сравнении в разных форматах:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 65

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

В главном меню для запуска утилиты достаточно выбрать ApexSQLApexSQL Data DiffLaunch:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 66

В появившемся окне нажмите внизу на кнопку “New”:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 67

Откроется окно параметров сравнения данных баз данных. Теперь необходимо заполнить нужные поля на вкладке «Data sources»:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 68

Обратите внимание на стрелки внизу. Они позволяют менять местами настройки слева направо и справа налево, а также копировать настройки слева направо и справа налево.

Далее нажмите на вкладку «Options» и выберите необходимые настройки сравнения данных баз данных (можно ничего не менять):
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 69

Во вкладке «Advanced options» можно просмотреть расширенные настройки, которые при необходимости можно изменить. Они аналогичные тем, что были приведены выше для сравнения схем баз данных. Добавляется только еще одна вкладка «Object mapping»:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 70

На этой вкладке сопоставляются для сравнения данных таблицы, колонки и их содержимое.

После всех настроек необходимо нажать на кнопку «Compare» для запуска процесса сравнения данных баз данных:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 71

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

По середине окна располагается список таблиц, в которых находятся отличающиеся записи, а внизу отображаются эти различия для выбранной таблицы. Слева отображаются данные, которые присутствуют на источнике, а справа — на получателе.

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

Откроется окно настроек непосредственно самой синхронизации баз данных.

На вкладке «Synchronization direction» задается направление синхронизации.

Далее, необходимо нажать на кнопку «Next»:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 73

На вкладке «Output options» указываем, что необходимо сгенерировать скрипт синхронизации:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 74

На вкладке «Summary and warnings» отображается итоговая информация по выбранным настройкам синхронизации. Для начала создания скрипта синхронизации необходимо нажать на кнопку «Create script»:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 75

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

Теперь рассмотрим по подробнее верхнюю панель проекта синхронизации данных баз данных, а именно само главное меню:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 77

Вкладка «View» содержит различные настройки по отображению компонентов окна.
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 78

Вкладка «Resources» содержит информацию о продукте, а также ссылки на документацию и центр поддержки пользователей.

Теперь разберем вкладку «Home».

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

Также можно сделать экспорт проекта в различные форматы:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 80

Решения от компании RedGate

Теперь рассмотрим инструменты SQL Compare и SQL Data Compare от компании RedGate.

Детальный обзор решений от компании RedGate

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

Инструмент SQL Compare от компании RedGate поставляется как отдельная утилита. Потому после его установки необходимо просто открыть новое приложение и на вкладке «Data sources» выбрать синхронизацию баз данных с обеих сторон:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 81

Здесь и далее, как и в тех тулзах, которые были рассмотрены ранее, слева располагается источник, а справа-приемник. Далее необходимо заполнить необходимые поля как на картинке:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 82

На вкладке «Table mapping» отображаются соответствующие друг другу таблицы:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 83

Здесь также можно нажать на «Full» необходимой таблицы и там просмотреть, а потом при необходимости и изменить, сопоставление колонок выбранной таблицы:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 84

На вкладке «Owner mapping» настраивается сопоставление схем:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 85

На вкладке «Options» можно просмотреть и настроить дополнительные настройки сравнения схем баз данных:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 86

Теперь необходимо нажать внизу на синюю кнопку «Compare now» для запуска процесса сравнения схем баз данных. В конце процесс необходимо нажать внизу на синюю кнопку «OK»:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 87

Будет выведено окно, в котором (подобно ApexSQL Diff) отображается список различий, а внизу код определения выбранного объекта с подсветкой этих различий:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 88

Как и раньше, необходимо выбрать галочками нужные объекты для синхронизации и нажать на большую синюю кнопу «Deploy»:
од определения выбранного объекта с подсветкой этих различий:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 89

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

На вкладке «Deployment method» можно выбрать метод синхронизации схем.

Здесь просто можно нажать на кнопку «Next»:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 90

Таким образом получим готовый скрипт синхронизации схем между выбранными базами данных, который можно применить в нужных базах данных:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 91

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

Инструмент SQL Data Compare от компании RedGate поставляется как отдельная утилита. Потому после его установки необходимо просто открыть новое приложение и на вкладке «Data sources» выбрать синхронизацию баз данных с обеих сторон:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 92

Здесь и далее, как и в тех тулзах, которые были рассмотрены ранее, слева располагается источник, а справа-приемник.

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

На вкладке «Table & views» отображаются соответствующие друг другу таблицы и представления:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 94

Здесь также можно нажать на «columns» необходимой таблицы или представления и там просмотреть, а потом при необходимости и изменить, сопоставление колонок выбранной таблицы или представления:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 95

На вкладке «Owner mapping» настраивается сопоставление схем объектов баз данных:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 96

На вкладке «Options» можно просмотреть и настроить дополнительные настройки сравнения данных баз данных:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 97

Теперь необходимо нажать внизу на синюю кнопку «Compare now» для запуска процесса сравнения данных баз данных. В конце процесс необходимо нажать внизу на синюю кнопку «OK»:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 98

Будет выведено окно, в котором (подобно ApexSQL Data Diff) отображается список различий, а внизу чем отличаются строки выбранной таблицы или представления с подсветкой этих различий:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 99

Как и раньше, необходимо выбрать галочками нужные объекты для синхронизации и нажать на большую синюю кнопу «Deploy»:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 100

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

На вкладке «Deployment method» можно выбрать метод синхронизации данных.

Здесь просто можно нажать на кнопку «Next»:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 101

Таким образом получим готовый скрипт синхронизации данных между выбранными базами данных, который можно применить в нужных базах данных:
Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server - 102

Сравнение цены и функционала

Продукт 1 лицензия 10 лицензий При покупке сразу двух продуктов
ApexSQL Diff 599$ 359$ Делается персонально и может составить 539$ для двух продуктов на одну лицензию при покупке 10 лицензий
ApexSQL Data Diff 599$ 359$ Делается персонально и может составить 539$ для двух продуктов на одну лицензию при покупке 10 лицензий
SQL Compare 785$ 785$ Может предоставляться персонально, но при покупке более 10 лицензий
SQL Data Compare 785$ 785$ Может предоставляться персонально, но при покупке более 10 лицензий
dbForge Schema Compare for SQL Server 300$ 300$ 400$ для двух продуктов на 1 лицензию
dbForge Data Compare for SQL Server 300$ 300$ 400$ для двух продуктов на 1 лицензию

Стоит также отметить, следующие функциональные возможности рассмотренных выше инструментов:

  1. источником для сравнения может служить:
    • база данных
    • снимок
    • папка со скриптами
    • резервная копия
    • система управления версиями
  2. с данными инструментами можно работать через командную строку
  3. синхронизацию можно выполнить напрямую или сохранить скрипт синхронизации для последующего выполнения. Также можно сохранить в виде bat-файла

На официальном сайте тулзы ApexSQL Diff приводится сравнение данной программы с тулзой SQL Compare.

Аналогично, и для тулзы ApexSQL Data Diff приводится сравнение с тулзой SQL Data Compare.

По приведенным сравнениям легко видеть, что что-то есть в ApexSQL, чего нет в Compare, а что-то наоборот есть в Compare, но нет в ApexSQL. Но все рассмотренные утилиты обладают необходимым набором основного функционала для сравнения как схем, так и самих данных баз данных.

По функционалу и цене, с учетом скидок и рассмотренного материала выше, продукты ApexSQL Diff и ApexSQL Data Diff являются оптимальным выбором.

Заключение

Были рассмотрены популярные утилиты для синхронизации схем и данных баз данных:

  1. dbForge Schema Compare for SQL Server компании Devart
  2. dbForge Data Compare for SQL Server компании Devart
  3. ApexSQL Diff компании Quest Software
  4. ApexSQL Data Diff компании Quest Software
  5. SQL Compare компании RedGate
  6. SQL Data Compare компании RedGate

Также было проведено краткое сравнение по цене и функционалу этих продуктов.

Итогом рассмотрения стал вывод о том, что оптимальным выбором по цене и функционалу являются продукты ApexSQL Diff и ApexSQL Data Diff компании Quest Software. Однако, основной необходимый функционал в достаточной степени есть и в продуктах компании Devart: dbForge Schema Compare for SQL Server и dbForge Data Compare for SQL Server. Эти продукты можно купить существенно дешевле, чем их аналоги ApexSQL Diff и ApexSQL Data Diff от компании Quest Software.

Аналогичные решения есть и для СУБД Oracle.

А какие компараторы помогают вам и для каких СУБД для сравнения схем и данных баз данных?

Источники

Автор: Евгений Грибков

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js