Есть ли способ в проекте базы данных Visual Studio, чтобы исключить определенный объект во время развертывания?

У меня есть сценарий, в котором я использую проект базы данных Visual Studio 2010 для развертывания изменений в нескольких установках базы данных, но в некоторых из них я хочу исключить набор представлений из этой копии. Есть ли способ использовать конфигурации сборки, чтобы исключить эти представления из развертывания?

2 ответа

Решение

Вы пытались создать составной проект? Я сам не реализовал этот сценарий, но, похоже, вы могли бы:

  1. Создайте project1, который состоит из основных объектов, необходимых для всех развертываний.
  2. Создайте project2, который состоит из набора представлений, необходимых для некоторых развертываний.
  3. Добавьте ссылку на project1 в project2.

Таким образом, при развертывании проекта 1 представления не будут включены, а при развертывании проекта 2 будут включены представления, а также основные объекты.

Посмотрите на следующую ссылку Microsoft. В частности, раздел под названием "Использование и ограничения составных проектов"

http://msdn.microsoft.com/en-us/library/dd193405.aspx

В итоге я написал собственный модификатор плана развертывания, управляемый с помощью переменных sqlcmd, определяющих объекты, к которым нельзя прикасаться во время развертывания. Каждая конфигурация проекта базы данных может ссылаться на свой набор этих переменных (файл.sqlcmdvars) - это можно установить на вкладке "Развертывание" в свойствах проекта.

Модификатор плана проверяет план развертывания и удаляет шаги, которые создают / изменяют / удаляют объекты, которые следует игнорировать. Мы используем его для игнорирования файлов данных (которые имеют разные имена в разных промежуточных средах), некоторых таблиц резервного копирования и нескольких типов объектов, которые мы не храним в проекте БД (пользователи, членство в ролях, разрешения на уровне базы данных). Функциональность аналогична (но более детальна) конфигурации Конфигурации сравнения схем (игнорируемые типы объектов), но она работает во время развертывания (также с VSDBCMD).

Часть "написать собственный модификатор плана развертывания" может показаться большой работой, но на самом деле все довольно просто, мне потребовалось меньше дня, включая части обучения и тестирования. На MSDN есть очень полезное прохождение.

Другие вопросы по тегам