ExecuteSqlScriptwithTransaction:失败,异常在多语句事务中不允许ALTER DATABASE语句

时间:2018-06-11 17:42:22

标签: sql sql-server sql-server-2008

当我尝试运行以下查询(Sql Server)时,我得到例外

  

ExecuteSqlScriptwithTransaction:失败,异常ALTER DATABASE   多语句交易中不允许使用该语句。

DECLARE @sql nvarchar(500)

IF((SELECT (size * 8 /1024.0)*1000 FROM sys.database_files df WHERE df.name like 'Test') < 9000000)  
   BEGIN    
      SET @sql = 'ALTER DATABASE Test MODIFY FILE ( NAME = N''Test'', SIZE = 10000000KB );'
      EXEC (@sql)          
  END 

GO

尝试如下,但同样的错误

DECLARE @sql nvarchar(500)

IF((SELECT (size * 8 /1024.0)*1000 FROM sys.database_files df WHERE df.name like 'Test') < 9000000)
BEGIN
ALTER DATABASE Test MODIFY FILE ( NAME = N'Test', SIZE = 10000000KB )
END

GO

1 个答案:

答案 0 :(得分:2)

标题中指定的ExecuteSqlScriptwithTransaction方法表明代码在事务中执行脚本。 enter image description here具体说明:

  

ALTER DATABASE语句必须以自动提交模式运行(默认设置)   事务管理模式)并且不允许在显式或   隐式交易。

所以解决方案是使用不同的方法执行脚本,没有明确的事务。