Есть ли способ в проекте базы данных Visual Studio для исключения определенного объекта во время развертывания? - PullRequest
9 голосов
/ 03 августа 2010

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

Ответы [ 2 ]

7 голосов
/ 19 апреля 2011

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

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

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

6 голосов
/ 05 марта 2011

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

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

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

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

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

...