Справочник по композитной базе данных SSDT с PostDeploy

У меня два проекта SSDT. База данных 1 ссылается на базу данных 2.

Проекты баз данных

При развертывании Database1, Table2 (из Database2) развертывается должным образом. Это потому, что при развертывании установлен флажок «Включить составные объекты».

Проблема в том, что только схема / объекты из Database2 разворачиваются с Database1. Файл «Script.PostDeployment.sql» не создается в сценарии как часть развертывания Database1. Однако он включается в сценарий, когда я развертываю Database2 непосредственно в целевой базе данных.

Как включить сценарии до и после развертывания из файлов dacpac, на которые есть ссылки, или проектов SSDT?


person Paul Knopf    schedule 21.08.2012    source источник


Ответы (1)


Я считаю, что вам понадобится сценарий пост-развертывания базы данных 1, вызывающий сценарий пост-развертывания базы данных 2. Например,

 Use SQLCMD syntax to include a file in the post-deployment script.         
 Example:      :r .\myfile.sql  

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

person Andrew Clear    schedule 21.08.2012
comment
Я, вероятно, мог бы сделать это сейчас, поскольку у меня есть упомянутый проект SSDT в том же sln, но в конечном итоге я буду ссылаться только на dacpac, внутри которого будет заключаться предварительное / пост-развертывание. Почему SSDT не выполняет сценарии до и после обработки для файлов dacpac, на которые есть ссылки? Это похоже на требование. - person Paul Knopf; 22.08.2012
comment
Поскольку в вашем справочнике развертывается только таблица 2 базы данных 2. Что, если сценарий развертывания для базы данных 2 изменил данные в таблице 27 базы данных 2? Вероятно, вы не захотите, чтобы это запускалось при развертывании db 1 (или оно могло даже не существовать в текущем контексте и прервать развертывание). - person Andrew Clear; 22.08.2012