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


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

Этот раздел применим к:

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional 

Visual Studio Express

Тема применяется Тема применяется Тема не применяется Тема не применяется

Visual Studio Premium или Visual Studio Ultimate можно использовать для сравнения целевой схемы с исходной схемой. В отношении каждого отличия можно указать, обновлять ли целевую схему так, чтобы она соответствовала исходной. Можно записать эти обновления непосредственно в целевую схему или экспортировать скрипт обновления в редактор Transact-SQL или файл. Также можно сохранить сравнения как часть проекта базы данных или как отдельный файл. Путем сохранения сравнений можно более легко повторить их или выполнить повторную синхронизацию тех же исходной и целевой схем.

Типы сравнений схем

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

  • База данных SQL Server — база данных, работающая в экземпляре SQL Server 2008 или SQL Server 2005.

  • Проект базы данных — проект, который содержит определения для базы данных SQL Server 2008 или SQL Server 2005 и создает DBSCHEMA-файл при построении.

  • Проект сервера — проект, который содержит определения для объектов сервера и объектов в базе данных master на сервере SQL Server 2008 или SQL Server 2005 и создает DBSCHEMA-файл при построении.

  • Проект компонента приложений уровня данных (DAC) — проект, создающий DACPAC-файл при построении.

  • DBSCHEMA-файл — результат построения проекта базы данных или проекта сервера.

  • DACPAC-файл — результат построения проекта компонента приложений уровня данных (DAC).

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

Исходная схема вниз,

через целевую схему

База данных SQL Server

Проект базы данных

DBSCHEMA-файл

Проект сервера

Проект DAC

DACPAC-файл

База данных SQL Server

Сравнение + обновление

Сравнение + обновление

Сравнение

Сравнение + обновление

Сравнение

Сравнение

Проект базы данных

Сравнение + обновление

Сравнение + обновление

Сравнение

Отсутствует

Отсутствует

Отсутствует

DBSCHEMA-файл

Сравнение + обновление

Сравнение + обновление

Сравнение

Сравнение + обновление

Отсутствует

Отсутствует

Проект сервера

Сравнение + обновление

Отсутствует

Сравнение

Сравнение + обновление

Отсутствует

Отсутствует

Проект DAC

Сравнение

Отсутствует

Отсутствует

Отсутствует

Сравнение + обновление

Сравнение

DACPAC-файл

Сравнение

Отсутствует

Отсутствует

Отсутствует

Сравнение + обновление

Сравнение

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

Невозможно сравнить схему сервера со схемой базы данных или схему базы данных со схемой сервера. Это относится и к схемам в виде DBSCHEMA-файла. Можно, например, сравнить проект сервера с DBSCHEMA-файлом, созданным из проекта сервера.

Два проекта базы данных можно сравнить только в том случае, если они содержатся в одном решении в Visual Studio.

Предупреждение

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

Предотвращение потери данных при обновлении схем баз данных

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

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

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

Важно!

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

Различия между сравнением схем и добавочным развертыванием

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

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

Общие задачи

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

Общие задачи

Справочные материалы

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

Пошаговое руководство. Сравнение схем двух баз данных

Пошаговое руководство. Сравнение схем базы данных и проекта базы данных

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

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

Сравнение объектов базы данных и сервера, а также дополнительное обновление целевой схемы для соответствия исходной схеме. Необходимо указать исходную и целевую схемы для сравнения, результаты которого отобразятся в окне сравнения схем. Можно просмотреть подробные сведения о различиях и скрипте обновления, который будет использоваться для синхронизации базы данных. Можно сохранить каждое сравнение схем в проекте или в отдельном SCMP-файле. Необходимо указать действия для каждого различия между исходной и целевой схемами, а затем записать обновления в целевую схему. Также можно экспортировать скрипт обновления в редактор Transact-SQL или в файл так, чтобы его можно было просмотреть до применения изменений к целевой схеме.

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

Интерпретация результатов сравнения схем

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

Устранение неполадок при сравнении схем

Интерпретация результатов сравнения схем

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

Столбец

Значения

Состояние

  • Равно. Объект имеет то же определение и содержит те же объекты в исходной и целевой схемах.

  • Новый. Объект содержится в исходной схеме, но отсутствует в целевой.

  • Отсутствует. Объект содержится в целевой схеме, но отсутствует в исходной.

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

  • Различные зависимости. Объект имеет то же определение, но содержит различные объекты в исходной и целевой схемах.

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

SourceName (источник {проект, база данных или файл проекта (DBSCHEMA)})

Имя сравниваемого исходного проекта, базы данных или файла проекта.

Действие обновления

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

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

  • Создать. Объект будет создан при записи обновлений или при запуске скрипта обновления.

  • Обновить. Определение объекта будет обновлено для соответствия исходной схеме при записи обновлений или при запуске скрипта обновления.

  • Удалить. Объект будет удален из целевой схемы при записи обновлений или при запуске скрипта обновления.

ПримечаниеПримечание
Действие по умолчанию определяется состоянием.Для объектов со значением состояния "Равно" действием по умолчанию является "Пропустить", и его невозможно изменить.Для объектов со значением состояния "Новый" действием по умолчанию является "Создать", но можно указать действие "Пропустить".Для объектов со значением состояния "Отсутствует" действием по умолчанию является "Удалить", но можно указать действие "Пропустить".Для объектов со значением состояния "Различные определения" действием по умолчанию является "Обновить", но можно указать действие "Пропустить".Для объектов со значением состояния "Разные зависимости" действием по умолчанию является "Пропустить", и его невозможно изменить (в этом случае объект является равным, но содержит новые, отсутствующие или измененные объекты).

TargetName (цель {проект, база данных или файл проекта (DBSCHEMA)})

Имя сравниваемого целевого проекта, базы данных или файла проекта.

Связанные сценарии

Журнал изменений

Дата

Журнал

Причина

Июнь 2010

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

Обратная связь от клиента.

Август 2010

Уточнено, что проекты можно сравнить только в том случае, если они содержатся в одном решении.

Обратная связь от клиента.