Авторизируйтесь,
чтобы продолжить
Некоторые функции доступны только зарегистрированным пользователям
Неправильный логин или пароль
Добавить софт
Мой софт

Сравнение и синхронизация баз данных и таблиц SQL

Автор: Иван Афанасьев
Опубликовано: 06.09.2011
Источник: SoftKey.info

Администраторы баз данных и SQL-программисты знают, как не просто бывает в случаях, когда нужно найти отличия между двумя базами данных или, что еще хуже, между содержимым таблиц. Ситуаций может быть множество – восстановление резервной копии, поддержка нескольких версий базы для тестирования и для работы, развертывание копии базы клиента для проверки кода и так далее. Решить проблему можно разными, не всегда удобными для использования способами, включая сам SQL и построение сложных запросов к системным таблицам. Но существует готовое решение с удобным и привычным интерфейсом сравнения и синхронизации любых объектов баз данных, включая записи отдельных таблиц.

Инструмент AdeptSQL Diff от Adept SQL Tools является мощным профессиональным средством для анализа и устранения расхождений между базами данных. Интерфейс программы аналогичен стандартному, де-факто прижившемуся внешнему виду и функционалу программ для сравнения текста. Только исходные для сравнения данные берутся из SQL-севера.

Выбор серверов и баз для сравнения
Выбор серверов и баз для сравнения

AdeptSQL Diff поддерживает следующие версии SQL-севера: MS SQL Server 2008, MS SQL Server 2005, MS SQL Server 2000. Базы для сравнения можно открывать как на одном сервере, так и на разных. Можно открыть вообще только одну базу для работы с ней в некоем аналоге Management Studio с поддержкой пошаговых транзакций.

Производитель декларирует быструю работу по анализу и сравнению баз данных, и в этом он не ошибается. Действительно большие структуры в сотни таблиц и тысячи объектов обрабатываются в считаные секунды. После сравнения объекты баз данных отмечаются в иерархическом списке цветом, согласно легенде. Сравниваемые сущности условно разделяются на левую (left) (ту, которую вы выбрали в левой стороне окна выбора базы для сравнения) и правую (right). Исходя из этого построена логика работы программы и осуществляются все дальнейшие действия. Легенда сравнения простая – отмечаются объекты, имеющие разницу. Отличия слева отмечаются одним цветом, отличия справа – другим. Цветовую дифференциацию можно изменить по вашему вкусу. Легенда всегда видна на экране, чтобы не запутаться.

Результат сравнения

Список можно отфильтровать и просматривать только отличия справа, только слева или вообще только отличия, скрыв идентичные объекты.

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

Сравнение процедур
Сравнение процедур

Любой объект можно синхронизировать в ту или другую сторону (вправо или влево). Программа генерит скрипт T-SQL в соответствии с выбранным условием синхронизации. Тут нужно отметить, что логика этих условий не совсем последовательна. Точнее сказать, интерфейс выбора вариантов немного запутан, на мой взгляд.

Варианты скриптов SQL
Варианты скриптов SQL

Как вы видите, меню создания скрипта разделено на две части – для правой и левой сторон. Однако если первые два пункта (CREATE и DROP) производят изменения, исходя из той же стороны, то третий пункт (UPDATE) – исходя из противоположной. То есть "CREATE from right-hand DB" сгенерит скрипт создания объекта правой базы данных на правой базе данных. А вот "UPDATE for right-hand DB" обновит правую БД, исходя из левой БД. В общем, тут надо быть внимательным, чтобы не уничтожить ненароком корректную версию. Быть более аккуратным поможет использование опций генерации скрипта с обязательным включением оператора USE и проверкой наличия объекта (IF EXISTS…).

Скрипт синхронизации таблиц
Скрипт синхронизации таблиц

Если вы все правильно сделали, то откроется окно редактора с готовым скриптом T-SQL. Редактор поддерживает подсветку синтаксиса и форматирование кода. Удобная функция – режим работы в транзакции (естественно, помимо обычной BEGIN TRANSACTION). В панели инструментов нажимается кнопка "Begin transaction" и можно пошагово выполнять любые команды в любой последовательности. В завершение транзакция подтверждается (Commit transaction) или откатывается (Rollback transaction). К сожалению, результатом работы скрипта не может быть набор записей и использовать редактор как полноценный инструмент для работы с таблицами базы данных не получится.

Помимо сравнения на уровне объектов базы данных программа позволяется сравнивать содержимое таблиц по записям. Перед началом сравнения необходимо указать ключевые поля (если они не заданы явно) и поля для сравнения. По умолчанию сравниваются все поля, но ненужные можно исключить, если в них нет важных данных. Это ускорит сравнение.

Настройки сравнения записей
Настройки сравнения записей

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

Результат сравнения записей таблиц
Результат сравнения записей таблиц

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

Скрипт синхронизации записей
Скрипт синхронизации записей

Кроме всего вышеописанного, AdeptSQL Diff имеет функцию создания отчета по проделанному анализу. Все выявленные различия формируются в виде удобных таблиц, подготовленных для печати.

Отчет о сравнении
Отчет о сравнении

Общее впечатление от AdeptSQL Diff весьма положительное. Она не отличается красочным интерфейсом, даже по сравнению с Management Studio программа выглядит более аскетичной. Однако в первую очередь это мощный и полезный инструмент для профессионалов. Сравнение баз данных происходит быстро и точно. Визуализация интуитивно понятна, описанные затруднения являются, скорее, вопросом привычки, чем серьезными недостатками. Программа обладает гибкими настройками, которые позволяют оптимизировать под себя логику работы, точность сравнения, внешний вид интерфейса, порядок взаимодействия с SQL-северами и так далее.

Настройки программы
Настройки программы

Кроме того, у редактора скриптов SQL есть свои настройки по подсветке синтаксиса, форматированию, подсказкам и автозавершению кода. Все выполнения скриптов по внесению изменений происходят с многочисленными перестраховками и запросами подтверждений, что поможет снизить риск ошибок. Многие функции автоматической генерации кода настраиваются, так что вы можете сами выбрать необходимый уровень подстраховки от выполнения не того скрипта в не той базе. AdeptSQL Diff именно тот инструмент, которого часто не хватает администраторам баз данных и программистам. Часть его функций, конечно, можно выполнить самостоятельно. Благо возможности SQL-сервера это позволяют. Но работать в удобном интерфейсе гораздо приятнее. Кроме того, зачем изобретать велосипед, если есть готовая программа со всеми необходимыми функциями?



Статистика
Всего программ 28602
Скачиваний сегодня 712
Скачиваний вчера 1192