0

我正在使用DbUp來維護和升級我的SQL Server 2016數據庫。我到目前爲止執行的典型SQL腳本包括創建表,創建或更改存儲過程等任務。如何從DbUp腳本執行alter database命令?

我將開始使用內存優化表,並且需要運行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) 

任何想法如何我可以通過DbUp運行ALTER DATABASE命令,或者是否有另一種方法來處理這種情況?

在此先感謝。

回答

0

更改數據庫需要獨佔數據庫訪問權限。

  1. 你必須使代碼斷開所有其它連接到數據庫
  2. 殺死所有未決的事務。

  3. 嘗試改變命令