0

Я использую DbUp для поддержки и обновления баз данных SQL Server 2016. Типичные сценарии SQL, которые я выполнил до сих пор, включали такие задачи, как создание таблиц, создание или изменение хранимых процедур и т. Д.Как выполнить команды изменения базы данных из сценариев DbUp?

Я собираюсь начать использовать таблицы с оптимизацией памяти и выполнить команды ALTER DATABASE для создания необходимых файловых групп в существующие базы данных. Я попробовал запустить динамический SQL-скрипт, который строит и запускает команды ALTER DATABASE, содержащие имя базы данных, в котором работает данный скрипт, но поскольку DbUp использует транзакционное выполнение, кажется, что инструкции ALTER не разрешены, и я получаю эту ошибку:

Script block number: 2; Block line 1; Message: 
System.Data.SqlClient.SqlException (0x80131904): ALTER DATABASE statement not allowed within multi-statement transaction. 
ALTER DATABASE statement not allowed within multi-statement transaction. 
ALTER DATABASE statement not allowed within multi-statement transaction 
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) 

Любые идеи о том, как я могу запускать команды ALTER DATABASE через DbUp, или есть альтернативный способ обработки этого случая?

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

ответ

0

Для базы данных Alter требуется эксклюзивный доступ к базе данных.

  1. вы должны сделать код, следует отключить все другие подключения к базе данных
  2. убить все незавершенные операции.

  3. попробовать команду

изменить