【问题标题】:How to execute alter database commands from DbUp scripts?如何从 DbUp 脚本执行 alter database 命令?
【发布时间】:2017-02-14 10:58:14
【问题描述】:

我正在使用 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 命令,或者是否有其他方法来处理这种情况?

提前致谢。

【问题讨论】:

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


    【解决方案1】:

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

    1. 您必须让代码断开与数据库的所有其他连接
    2. 杀死所有待处理的事务。

    3. 尝试更改命令

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 2016-12-07
      相关资源
      最近更新 更多