如何从DbUp脚本执行alter database命令?

时间:2017-02-14 10:58:15

标签: .net sql-server database entity-framework-6 database-administration

我正在使用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命令的任何想法,还是有其他方法可以处理这种情况?

提前致谢。

1 个答案:

答案 0 :(得分:0)

Alter Database需要独占数据库访问权。

  1. 您必须使代码断开与数据库的所有其他连接
  2. 终止所有待处理的交易。

  3. 尝试更改命令