Существует целый ряд решений для сравнения данных и схем баз данных. За годы практики мне пришлось работать с несколькими такими инструментами. .

План тестирования

Для тестирования было решено использовать базу данных AdventureWorks2008 R2, так как в ней удачно используется широкий диапазон решений, которые нечасто применяются в большинстве баз данных, в том числе несколько схем, расширенные свойства, триггеры языка определения данных (DDL), коллекции схем XML и полнотекстовые индексы. Чтобы углубить исследование и выяснить предельные возможности инструментов, я несколько усложнил задачу и сделал следующее:

  • создал сертификат в базе данных;
  • подготовил хранимую процедуру и подписал ее с использованием сертификата;
  • импортировал сертификат в главную базу данных, сформировал из него имя входа и создал учетную запись пользователя в базе данных AdventureWorks2008 R2, сопоставленного пользователю сертификата;
  • создал небезопасную сборку CLR и процедуру CLR;
  • изменил свойство Trustworthy базы данных, чтобы разрешить небезопасную сборку CLR;
  • создал очередь, маршрут и службу Service Broker, а также уведомление о событиях;
  • выбрал экземпляр для сравнения схем без установленного полнотекстового механизма, чтобы вызвать отказ полнотекстовых индексов.

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

SQL Compare 9.0

SQL Compare 9.0
ЗА:
интуитивно-понятный, простой в использовании инструмент; мощная функциональность.
ПРОТИВ: неудобно обращаться с объектами.
ОЦЕНКА: 3 из 5.
ЦЕНА: от 395 долл.; 595 долл. за версию SQL Compare Professional; оптовые скидки.
РЕКОМЕНДАЦИИ: у SQL Compare есть ряд уникальных возможностей, но в целом функциональность других инструментов более широкая.
КОНТАКТНАЯ ИНФОРМАЦИЯ: Red Gate Software, www.red-gate.com

Первым испытанным мною инструментом был SQL Compare 9.0. Установка прошла довольно просто и быстро. Но загрузив инструмент, я почувствовал, что компания слишком активно продвигает другие свои продукты. Мне был предложен вариант загрузки всего комплекса SQL Toolbelt, но я перешел на страницу SQL Compare и загрузил лишь один инструмент. К сожалению, это не помогло перейти напрямую к установке SQL Compare. По умолчанию устанавливаются все приложения комплекса SQL Toolbelt. Мне пришлось пройти по списку на трех страницах и отменить выбор всех инструментов, кроме единственного нужного мне. Тем не менее у меня нет особенных претензий к установке: она прошла довольно быстро, и такой подход был бы полезным при необходимости загрузить несколько инструментов или даже SQL Toolbelt целиком.

При первом запуске SQL Compare 9.0 на экране появилось интуитивно понятное и простое для использования диалоговое окно. Мне удалось немедленно приступить к сравнению баз данных, не тратя времени на изучение продукта. Результаты сравнения поначалу казались простыми и понятными (см. экран 1).

 

Результаты сравнения SQL Compare
Экран 1. Результаты сравнения SQL Compare

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

Удобство SQL Compare для выполнения сравнения впечатляет, но после сравнения удобство и функциональность не столь хороши. SQL Compare обеспечивает сравнение баз данных, резервных копий баз данных и сценариев схемы базы данных, сохраненных в папке или системе управления версиями. Имеется надстройка среды SQL Server Management Studio (SSMS) для добавления функциональности SQL Compare непосредственно в SSMS. К недостаткам относится то, что при необходимости отфильтровать определенные объекты из результатов прямого способа их удаления не существует. Чтобы удалить такой объект, как отфильтрованные индексы, требуется изменить параметры проекта, после чего приходится перезапустить сравнение. Более того, в процессе синхронизации не удается синхронизировать объекты некоторых типов, в частности CLR, подписанные процедуры и сертификаты. И очень досадно, что нельзя дополнить сформированные сценарии проверками наличия.

ApexSQL Diff

ApexSQL Diff
ЗА:
гибкая настройка; богатая функциональность; изменение параметров проекта без перезапуска сравнения.
ПРОТИВ: нет режима резервного копирования моментальных снимков; не поддерживает подписанные процедуры и сертификаты; программа несколько перегружена функциями.
ОЦЕНКА: 4 из 5.
ЦЕНА: 99 долл. для одного пользователя; предоставляются оптовые скидки.
РЕКОМЕНДАЦИИ: функциональность ApexSQL Diff из четырех инструментов наиболее привлекательна; у продукта есть несколько минусов, но их легко обойти; рекомендую этот инструмент администраторам, которые нуждаются в широкой функциональности.
КОНТАКТНАЯ ИНФОРМАЦИЯ: ApexSQL, www.apexsql.com

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

При первом просмотре результатов сравнения слегка разочаровало, что они сгруппированы по типу различий, из-за чего все объекты оказались сведены в три группы. При таком подходе труднее отыскать конкретные объекты среди результатов. Я быстро обнаружил параметры View и выяснил, что предусмотрены различные режимы просмотра, в том числе с группированием по типу объекта. Таким образом мне удалось получить именно такой вид, который был нужен. На экране 2 показаны результаты сравнения ApexSQL Diff, сгруппированные по типу различий.

 

Результаты сравнения ApexSQL Diff
Экран 2. Результаты сравнения ApexSQL Diff

Освоить ApexSQL Diff несколько сложнее, чем другие инструменты, но этот недостаток с лихвой компенсируется многочисленными функциями и гибкостью настроек. Главное достоинство мощных фильтров — возможность применять их динамически, что позволяет составлять сценарии для проверки наличия и продолжать или останавливать процесс синхронизации в случае ошибки. Один из наиболее привлекательных компонентов, отсутствующий в других инструментах, — панель Differences by Type, на которой можно точно установить отличия выбранного объекта, вместо того чтобы определять их на основе сценария. Пользоваться панелью было очень удобно в течение всего тестирования.

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

xSQL Object

xSQL Object
ЗА:
режим командной строки; возможность сохранить все серверы и базы данных; удобные для чтения и визуально привлекательные отчеты; простота использования.
ПРОТИВ: нет функции резервного копирования, только резервные копии моментальных снимков; сложность освоения; не поддерживаются сертификаты и подписанные процедуры.
ОЦЕНКА: 3,5 из 5.
ЦЕНА: от 299 долл. для одного пользователя без инструмента командной строки и 399 долл. с инструментом командной строки; предоставляются оптовые скидки.
РЕКОМЕНДАЦИИ: xSQL Object — самый простой в использовании инструмент, и благодаря ряду уникальных функций он явно выделяется среди конкурентов; рекомендуется администраторам, для которых удобство использования — решающий фактор.
КОНТАКТНАЯ ИНФОРМАЦИЯ: xSQL Software, www.xsqlsoftware.com

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

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

После того как я освоил запуск операции сравнения, меня приятно удивили результаты. Работать с ними гораздо проще, чем с результатами любых других инструментов; кроме того, визуально они самые привлекательные. Объекты разделяются по типу объекта, поэтому нужную информацию найти легко. Многочисленные уровни сводки результатов можно развернуть, чтобы выяснить различные аспекты объекта и свойств. Кроме того, можно отменить выбор объекта или свойств. Если нужно отменить выбор многих объектов, работать с инструментом утомительно, так как выполнить эту операцию можно только для отдельных объектов. Выбор целой группы объектов отменить нельзя. Панель результатов понятна и проста в использовании. На экране 3 показаны результаты сравнения для xSQL Object.

 

Результаты сравнения xSQL Object
Экран 3. Результаты сравнения xSQL Object

Одна из выдающихся функций — отчеты. Они есть во всех инструментах, но отчет xSQL Object легче читается и выглядит привлекательнее, чем у любого другого инструмента. Когда я впервые открыл xSQL Object, мне не понравился интерфейс программы, но в нем есть очень удачный компонент Server Explorer служб SSMS, с помощью которого можно зарегистрировать серверы и базы данных для сравнения. Эта функция будет очень полезна, если потребуется часто выполнять сравнение для различных серверов и баз данных.

Schema Compare в составе Visual Studio 2010

Visual Studio 2010Тs Schema Compare
ЗА:
входит в состав Visual Studio; безупречная интеграция с проектами; более глубокое сравнение объектов, чем у других продуктов; инструмент командной строки для программного сравнения схем и создания сценариев изменения; поддержка SQLCmd; возможность создания отдельных сценариев для каждого объекта; полная поддержка подписанных процедур и назначение свойства Trustworthy для базы данных; сравнение файлов dbschema, баз данных и сценариев базы данных.
ПРОТИВ: не выпускается в качестве самостоятельного инструмента; требуется версия Visual Studio Ultimate или Premium; в интерфейсе отсутствуют некоторые функции.
ОЦЕНКА: 4 из 5.
ЦЕНА: обратитесь к розничному партнеру или специалисту по лицензированию.
РЕКОМЕНДАЦИИ: Schema Compare из пакета Visual Studio располагает рядом уникальных функций. Этот инструмент рекомендуется использовать обладателям Visual Studio 2010 Premium и Ultimate. Для остальных функциональность данного инструмента не оправдает затрат на приобретение Visual Studio.
КОНТАКТНАЯ ИНФОРМАЦИЯ: Microsoft, www.microsoft.com

Последний из протестированных инструментов сравнения баз данных — Schema Compare в составе Visual Studio 2010 Ultimate. Первоначально он был выпущен как часть пакета Visual Studio 2005 Team Edition for Database Professionals, а сейчас предоставляется в выпусках Visual Studio 2010 Premium и Ultimate. Он не распространяется как самостоятельный инструмент, но тем не менее работать с ним довольно просто. Большинство желающих применять инструмент сравнения уже используют Visual Studio как платформу разработки. Для них инструмент уже установлен и готов к применению.

Интерфейс Schema Compare не относится к интуитивно понятным и простым для использования. Выбирая параметры, чтобы выяснить, какие объекты можно отфильтровать, я с удивлением обнаружил, насколько широк диапазон действия инструмента. Программа сравнивает объекты в базе данных, свойства базы данных, в том числе физическую структуру, и определенные серверные объекты, которые могут влиять на базу данных, в частности серверные триггеры, аудиты сервера и членство в ролях сервера.

Выходные данные сравнения — простые и ясные. Панель результатов не переполнена функциями, но располагает всем необходимым. Объекты сгруппированы логически по типу объекта, а благодаря многочисленным уровням расширения видны любые различающиеся или совпадающие свойства и элементы объекта. Еще одна особенность, благодаря которой проще освоить инструмент: он является частью Visual Studio и потому имеет хорошо знакомый пользователям интерфейс. На экране 4 показаны результаты сравнения для Schema Compare.

 

Результаты сравнения Schema Compare
Экран 4. Результаты сравнения Schema Compare

Самое привлекательное качество Schema Compare — глубина сравнения. Это единственный из протестированных инструментов, который назначил свойство Trustworthy и успешно создал процедуру и сборку CLR без вмешательства со стороны пользователя. Кроме того, это единственный испытанный инструмент, который распознал, что одна из процедур была подписанной, и попытался подписать ее в процессе синхронизации. После того как сертификат был создан вручную, инструмент успешно подписал процедуру. Schema Compare — единственный из протестированных инструментов с возможностью запуска сценариев в SQLCmd.

Завершающее сравнение

После тестирования всех четырех инструментов сравнения баз данных я не мог выбрать явного победителя. Каждый инструмент располагал функциями и особенностями, которые делали его уникальным. Schema Compare из пакета Visual Studio 2010 — инструмент, применение которого можно обосновать исключительно платформой разработки. С точки зрения удобства использования наиболее привлекателен xSQL Object благодаря интерфейсу, похожему на Object Explorer, и простой структуре. Если выбирать по широте функциональности, то лучший инструмент — ApexSQL Diff. Единственный продукт, который не имеет явных преимуществ ни в одной категории, — SQL Compare 9.0. Выбирая инструмент, обращайте внимание на функции, наиболее актуальные для ваших целей.

Роберт Дэвис (rodav@microsoft.com) — менеджер программы SQL Server Master Certification в Microsoft. Имеет сертификат SQL Server 2008 Certified Master