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


Оптимизация кода объектов базы данных в среде на основе рабочих групп

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

  • Сервер базы данных, содержащий действующую базу данных и данные.

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

  • Компилированный файл .dbschema, содержащий данные, необходимые для развертывания схемы базы данных в любой конечной базе данных и на сервере. Этот файл создается при построении проекта базы данных.

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

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

Рефакторинг в среде на основе рабочих групп

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

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

Ошибка операции рефакторинга происходит в следующих случаях:

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

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

  • Если выдается запрос на извлечение файлов и вы нажимаете кнопку Отмена, операция рефакторинга отменяется.

    Примечание

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

Журналы рефакторинга и сохранение предназначений

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

Если два или больше разработчиков вносят изменения, которые обновляют журнал рефакторинга, необходимо объединять изменения в файле журнала. Файл .refactoring - это файл XML с простой схемой, так что объединение обновлений не должно быть сложным процессом. Каждая операция включает дату и время, чтобы вы могли убедиться, что операции рефакторинга применяются в правильном порядке.

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

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

Журнал рефакторинга будет выглядеть примерно так:

<?xml version="1.0" encoding="utf-16"?>
<Operations>
  <Operation Name="Move Schema" Key="677a0ee6-1707-413a-985f-b392b1a2d68b" ChangeDateTime="04/07/2008 21:59:00">
    <Property Name="ElementName" Value="[Person].[AbsenceHistory]" />
    <Property Name="ElementType" Value="ISql90Table" />
    <Property Name="NewSchema" Value="HumanResources" />
    <Property Name="IsNewSchemaExternal" Value="True" />
  </Operation>
  <Operation Name="Rename Refactor" Key="fb88992c-cd6e-43d0-aa54-ed80f155d202" ChangeDateTime="04/07/2008 21:59:26">
    <Property Name="ElementName" Value="[HumanResources].[AbsenceHistory].[column_1]" />
    <Property Name="ElementType" Value="ISqlSimpleColumn" />
    <Property Name="ParentElementName" Value="[HumanResources].[AbsenceHistory]" />
    <Property Name="ParentElementType" Value="ISql90Table" />
    <Property Name="NewName" Value="EmployeeID" />
  </Operation>
</Operations>

В этом примере журнала записаны две операции рефакторинга. В первой операции таблица [AbsenceHistory] была перемещена из схемы [Person] в схему [HumanResources]. В ходе второй операции столбец [column_1] в таблице [AbsenceHistory] был переименован на [EmployeeID].

См. также

Основные понятия

Создание баз данных и приложений уровня данных, а также управление ими в Visual Studio

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

Перемещение объекта базы данных в другую схему

Рефакторинг кода и данных базы данных