Начало командной разработки больших баз данных

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

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

  • Составные проекты. Можно определить разделы базы данных в двух или нескольких проектах базы данных (в одном и том же решении; можно также сослаться на скомпилированный DBSCHEMA-файл), связанные ссылками на проекты базы данных. При развертывании проекта, содержащего ссылку, также будут развернуты все проекты, на которые он ссылается. Циклические ссылки между проектами в составном проекте недопустимы.

  • Частичные проекты. Можно экспортировать раздел проекта базы данных в виде FILES-файла. Затем создать второй проект базы данных и включить в него частичный проект (FILES-файл). Затем установить разрешения на запись в исходные файлы, ограничив их изменение. Таким образом, разработчики, занимающиеся вторым проектом, могут создавать дополнительные объекты, которые ссылаются на доступные только для чтения объекты, но не изменяют их. При построении и развертывании второго проекта выполняется построение полной копии базы данных, включая разделы, доступные только для чтения. Циклические ссылки в частичном проекте допустимы.

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

Задание типа проекта базы данных

При создании проекта базы данных указывается тип проекта, соответствующий используемой версии SQL Server. Например, если в основе управляемой базы данных лежит SQL Server 2005, нужно указать либо Проект базы данных SQL Server 2005 либо Мастер SQL Server 2005. Если используется мастер, можно не только создать проект, но и настроить некоторые параметры построения и развертывания, а также импортировать объекты базы данных и параметры.

Импорт объектов и параметров баз данных

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

Устранение подобных ошибок при импорте большой схемы может занять довольного много времени. Однако участники команды не могут неосознанно внести дополнительные ошибки такого типа в ходе обновления схемы в Visual Studio Premium. При изменении и сохранении ими какого-либо определения объекта все изменения проверяются, что позволяет членам команды немедленно устранить проблемы и избежать развертывания этих ошибок в функционирующей базе данных. После устранения ошибок, ставших причиной предупреждения в определениях объектов, рекомендуется также выполнить анализ кода базы данных для выявления проблем структуры, именования и производительности. Дополнительные сведения см. в разделе Анализ кода базы данных с целью улучшения качества кода.

Общие задачи

Общие задачи

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

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

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

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

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

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

Использование и ограничений частичных проектов

На следующем рисунке показан типичный сценарий, в котором задействованы частичные проекты.

Использование частичных проектов в выпуске Database Edition

Разделяемые проекты в выпуске Database Edition

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

  1. Экспортировать группы объектов либо по схеме, либо по типу объекта в файлы A.files и B.files.

  2. Создать второй проект базы данных, в котором другой разработчик или команда создадут хранимые процедуры (иногда называемые процедурами sproc).

  3. Импортировать экспортированные частичные проекты A.files и B.files во второй проект базы данных.

  4. Ограничить разрешения на управление исходным кодом для объектов в импортированных составных проектах доступом только для чтения.

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

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

  • Создавайте проекты баз данных в папке с коротким именем пути. Например, лучше выбрать папку "D:\MyProjects" вместо "C:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects".

  • Избегайте слишком длинных имен объектов базы данных. Наиболее распространенным типом объектов с длинными именами являются внешние ключи. Если имя внешнего ключа — "FK_ReferencingTable_ReferencedTable_ReferencedColumn1_ReferencedColumn2", при попытке импорта частичного проекта, содержащего определение этого ключа, могут возникнуть ошибки.

Использование и ограничения составных проектов

На следующем рисунке показан типичный сценарий, в котором задействованы составные проекты.

Использование составных проектов в выпуске Database Edition

Составные проекты в выпуске Database Edition

В этом примере можно создать проект базы данных, содержащий определения схем. Затем создается второй проект базы данных, содержащий определения таблиц и представлений, а также третий проект базы данных — с определениями хранимых процедур. Третий проект (проект базы данных C) содержит ссылки на другие проекты базы данных. При построении и развертывании третьего проекта автоматически будут развернуты и другие проекты.

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

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