sql - ExecuteSqlScriptwithTransaction:失败,多语句事务中不允许出现异常 ALTER DATABASE 语句
问题描述
当我尝试在查询(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
解决方案
标题中命名的ExecuteSqlScriptwithTransaction
方法表明代码在事务中执行脚本。ALTER DATABASE 文档特别指出:
ALTER DATABASE 语句必须在自动提交模式(默认事务管理模式)下运行,并且不允许在显式或隐式事务中运行。
所以解决方案是使用不同的方法执行脚本,一种没有显式事务的方法。
推荐阅读
- sql - 将声明的变量设置为 2 个连接列
- php - 如何在laravel中输出奇偶行
- angular - 如何获取价值而不是Angular Reactive表单控件的viewValue?
- python - 查找数组中匹配某个条件的第一个元素的索引
- c# - C# sql 命令参数没有被使用?
- ruby-on-rails - 什么决定了 rails 是否在表定义中包含 id: :serial ?
- node.js - 如何将字符串拆分为数对?
- timber - 在 Timber $context['posts'] 对象中操作帖子顺序
- json - 使用带有 AJAX 表单的 Django 更新模型值的最简单方法
- java - 如何解决由于多线程而将对象两次添加到 Set 的问题?