Поделиться через


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

 

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

System_CAPS_noteПримечание

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

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

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

  • Просмотр различий между двумя базами данных.Дополнительные сведения см. в разделе Просмотр различий данных.

  • Обновление всей или части целевой базы данных для согласования с исходной базой данных.Дополнительные сведения см. в разделе Синхронизация данных базы данных.

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

System_CAPS_noteПримечание

Можно также сравнивать схемы двух баз данных или две версии одной и той же базы данных.Дополнительные сведения см. в разделе Как использовать сравнение схем для сопоставления различных определений баз данных.

Сравнение данных базы данных

Сравнение данных с использованием мастера создания сравнения данных

  1. В меню SQL выберите Сравнение данных, затем щелкните Создание сравнения данных.

    Произойдет запуск мастера создания сравнения данных.Кроме того, откроется окно «Сравнение данных», и в Visual Studio произойдет автоматическое назначение сравнению имени, такого как DataCompare1.

  2. Укажите базу данных-источник и целевую базы данных.

    Если список База данных-источник или Целевая база данных пуст, щелкните Создание соединения.В диалоговом окне Свойства соединения укажите сервер, на котором находится база данных, и тип проверки подлинности, применяемой при подключении к базе данных.Затем нажмите кнопку ОК, чтобы закрыть диалоговое окно Свойства соединения и возвратиться к мастеру сравнения данных.

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

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

    System_CAPS_noteПримечание

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

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

  5. Нажмите кнопку Готово.

    Начинается сравнение.

    System_CAPS_noteПримечание

    Можно остановить выполняемую операцию сравнения данных. Откройте меню SQL, нажмите Сравнение данных, затем Остановить сравнение данных.

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

Сравнение данных с использованием модели автоматизации Visual Studio

  1. В меню Вид (View) выберите пункт Другие окна (Other Windows), а затем пункт Окно команд (Command Window).

  2. Введите в окне команд следующую команду:

    Sql.NewDataComparison /SrcServerName sServerName /SrcDatabaseName sDatabaseName /SrcUserName sUserName /SrcPassword sPassword /SrcDisplayName sDisplayName /TargetServerName tServerName /TargetDatabaseName tDatabaseName /TargeUserName tUserName /TargetPassword tPassword /TargetDisplayName tDisplayName
    

    Замените заполнители (sServerName, sDatabaseName, sUserName, sPassword, sDisplayName, tServerName, tDatabaseName, tUserName, tPassword и tDisplayName) на значения для ваших исходной и целевой баз данных.

    Если база данных-источник и целевая база данных не указаны, откроется диалоговое окно Создание сравнения данных.Дополнительные сведения о параметрах для команды Sql.NewDataComparison см. в разделе Справочник по командам автоматизации функций работы с базами данных в Visual Studio.

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

Просмотр различий данных

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

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

Просмотр различий данных

  1. Сравните данные в базе данных-источнике и целевой базе данных.Дополнительные сведения см. в разделе Сравнение данных базы данных.

  2. (Необязательно) Выполните одно или оба следующих действия.

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

    • Для просмотра результатов, относящихся к записям определенного объекта, щелкните объект в основной области результатов, затем откройте вкладку на панели просмотра записей.На каждой вкладке отображаются все записи данного объекта, имеющие определенное состояние: «различающиеся», «только в базе данных-источнике», «только в целевой базе данных» и «идентичные».Данные отображаются по записям и столбцам.

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

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

Обновление данных целевой базы данных с использованием команды записи обновлений

  1. Сравните данные в базе данных-источнике и целевой базе данных.Дополнительные сведения см. в разделе Сравнение данных базы данных.

    После завершения сравнения в окне «Сравнение данных» отображаются результаты, относящиеся к сравниваемым объектам.Сведения об объектах, позволяющие судить об их идентичности, представлены в четырех столбцах (именуемых «Различные записи», «Только в базе данных-источнике», «Только в целевой базе данных» и «Идентичные записи»).Для каждого такого объекта в этих столбцах приведены данные о том, сколько различающихся записей было обнаружено и сколько записей должно быть изменено в операции обновления.Вначале эти два числа совпадают, но в шаге 4 можно изменить состав обновляемых объектов.

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

  2. Щелкните строку таблицы в окне «Сравнение данных».

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

  3. В области сведений откройте вкладку, в имени которой содержится число, отличное от (0).

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

  4. Очистите флажки, относящиеся к записям в целевой базе данных, которые не должны быть обновлены данными из исходной базы данных.

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

  5. (Необязательно) Щелкните Создать скрипт.

    Откроется окно редактора Transact-SQL с отображением скрипта языка обработки данных (DML), который предназначен для обновления целевой базы данных.

  6. Чтобы синхронизировать различающиеся, недостающие или новые записи, щелкните Обновить целевую базу данных.

    System_CAPS_noteПримечание

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

    Данные в выбранных записях целевой базы данных обновляются данными из соответствующих записей исходной базы данных.

    System_CAPS_noteПримечание

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

Обновление данных целевой базы данных с использованием скрипта Transact-SQL

  1. Сравните данные в базе данных-источнике и целевой базе данных.Дополнительные сведения см. в разделе Сравнение данных базы данных.

    После завершения сравнения в окне «Сравнение данных» отображаются сравниваемые объекты.Дополнительные сведения см. в разделе Сравнение и синхронизация данных из одной или нескольких таблиц с данными из эталонной базы данных.

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

  3. Щелкните Создать скрипт.

    Открывается окно с отображением скрипта Transact-SQL, который должен распространить изменения, необходимые для согласования данных целевой базы данных с данными исходной базы данных.Это окно получает имя наподобие DataUpdate_Database_1.sql.

    В данном скрипте отражаются изменения, внесенные в области сведений.Например, предположим, что на странице «Только в целевой базе данных» очищен флажок, относящийся к какой-то строке таблицы [dbo].[Shippers].В этом случае скрипт не обновит эту строку.

  4. (Необязательно) Измените скрипт в окне DataUpdate_Database_1.sql.

  5. (Необязательно, но рекомендовано) Создайте резервную копию целевой базы данных.

  6. Щелкните Выполнить, чтобы обновить целевую базу данных.

    Укажите соединение с целевой базой данных, которую необходимо обновить.

    Важно!

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

    Данные в выбранных записях целевой базы данных обновляются данными из соответствующих записей исходной базы данных.

См. также

Сравнение и синхронизация данных из одной или нескольких таблиц с данными из эталонной базы данных