Есть ли способ в проекте базы данных Visual Studio, чтобы исключить определенный объект во время развертывания?
У меня есть сценарий, в котором я использую проект базы данных Visual Studio 2010 для развертывания изменений в нескольких установках базы данных, но в некоторых из них я хочу исключить набор представлений из этой копии. Есть ли способ использовать конфигурации сборки, чтобы исключить эти представления из развертывания?
2 ответа
Вы пытались создать составной проект? Я сам не реализовал этот сценарий, но, похоже, вы могли бы:
- Создайте project1, который состоит из основных объектов, необходимых для всех развертываний.
- Создайте project2, который состоит из набора представлений, необходимых для некоторых развертываний.
- Добавьте ссылку на project1 в project2.
Таким образом, при развертывании проекта 1 представления не будут включены, а при развертывании проекта 2 будут включены представления, а также основные объекты.
Посмотрите на следующую ссылку Microsoft. В частности, раздел под названием "Использование и ограничения составных проектов"
В итоге я написал собственный модификатор плана развертывания, управляемый с помощью переменных sqlcmd, определяющих объекты, к которым нельзя прикасаться во время развертывания. Каждая конфигурация проекта базы данных может ссылаться на свой набор этих переменных (файл.sqlcmdvars) - это можно установить на вкладке "Развертывание" в свойствах проекта.
Модификатор плана проверяет план развертывания и удаляет шаги, которые создают / изменяют / удаляют объекты, которые следует игнорировать. Мы используем его для игнорирования файлов данных (которые имеют разные имена в разных промежуточных средах), некоторых таблиц резервного копирования и нескольких типов объектов, которые мы не храним в проекте БД (пользователи, членство в ролях, разрешения на уровне базы данных). Функциональность аналогична (но более детальна) конфигурации Конфигурации сравнения схем (игнорируемые типы объектов), но она работает во время развертывания (также с VSDBCMD).
Часть "написать собственный модификатор плана развертывания" может показаться большой работой, но на самом деле все довольно просто, мне потребовалось меньше дня, включая части обучения и тестирования. На MSDN есть очень полезное прохождение.