我正在使用DbUp来维护和升级我的SQL Server 2016数据库。到目前为止,我执行的典型SQL脚本包括创建表,创建或更改存储过程等任务。
我将开始使用内存优化表,并需要运行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 :(得分:0)
Alter Database需要独占数据库访问权。
终止所有待处理的交易。
尝试更改命令