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


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

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

Примечание.

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

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

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

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

Примечание.

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

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

Сравнение данных с помощью нового мастера сравнения данных

  1. В главном меню выберите Tools -SQL Server ->New Data Comparison.>

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

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

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

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

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

    Примечание.

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

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

  5. Выберите Готово.

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

    Примечание.

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

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

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

  1. Откройте меню "Вид", наведите указатель мыши на другие окна и выберите "Командное окно".

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

    Tools.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) значениями для ваших базы данных-источника и целевой базы данных.

    Если вы не указываете источник и целевой объект, откроется диалоговое окно "Новое сравнение данных". Дополнительные сведения о параметрах для команды Tools.NewDataComparison см. в справочнике по командам автоматизации для функций баз данных в Visual Studio Team System.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Примечание.

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

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

    Примечание.

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

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

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

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

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

  3. Выберите " Создать скрипт".

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

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

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

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

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

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

    Внимание

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

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