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. 尝试改变命令