Развертывание нескольких баз данных SQL Server 2014 за один раз

У меня есть 5 файлов .dacpac, один dacpac для одной базы данных с целью SQL Server 2014. Самая последняя база данных в списке зависит от остальных 4.

Я могу развернуть каждый .dacpac по отдельности, используя sqlpackage.exe, который отлично работает.

Что я действительно хотел бы сделать, так это сделать это «транзакционно», если это правильное слово для этого контекста, чтобы при создании 5 баз данных, если какое-либо развертывание пойдет не так, все развертывания откатились.

Либо создаются все базы данных, либо ни одна.

Возможно ли это, и если да, то как я могу это сделать? Я не против сценариев Powershell, если уж на то пошло.

Заранее спасибо.


person Scott    schedule 01.12.2016    source источник


Ответы (1)


Powershell может это сделать, хотя вам придется вручную управлять «транзакцией».

Сначала создайте сценарий powershell, который развертывает dacpacs, т. е. вы должны иметь возможность копировать и вставлять каждую командную строку sqpackage.exe с нужными параметрами.

Затем оберните каждую команду в блок try/catch powershell, в каждом разделе catch должны быть соответствующие команды ручного отката, чтобы привести все в порядок на каждом этапе.

person Jimbo    schedule 01.12.2016
comment
Привет Джимбо, спасибо за ответ. Могу ли я задействовать 5 развертываний sqlpackage.exe в одной транзакции Sql? Пытался найти информацию об этом через гугл, не очень обрадовался... - person Scott; 01.12.2016
comment
напр. dacpac использует базу данных drop - эту команду нельзя использовать в транзакции t-sql. - person Jimbo; 01.12.2016