"Config语句不能在用户事务内使用"

4

当我尝试在事务内运行RECONFIGURE语句时,会出现以下错误:

无法在用户事务内使用CONFIG语句。

有没有任何异步运行此命令或其他方法可以修复错误的方式?

这是一个简化版本的重现错误的操作:

BEGIN Transaction

EXEC sp_configure 'clr enabled', 1

RECONFIGURE

Commit Transaction

4
为什么你要在事务中执行RECONFIGURE?这样做是无法回滚的。 - Sean Lange
5
交易中进行重新配置的原因是什么?对我来说听起来像是 XY 问题。您究竟想要实现什么目标? - Andrey Korneyev
当我们进行构建时,我们有一个脚本来构建数据库。我需要启用CLR,并且我了解一旦执行此命令,您需要运行RECONFIGURE才能使其正常工作。 - Shazoo
@Shazoo 好的,但为什么要在事务中执行?启用clr大多是一次性操作,没有必要一直开关它。 - Andrey Korneyev
1
@Shazoo 嗯,使用脚本创建数据库并不罕见。但我仍然不明白为什么你需要在事务中创建/配置这些数据库。我在这种情况下看不到事务的好处。 - Andrey Korneyev
显示剩余3条评论
2个回答

0

事务是一种构造,可以回滚(撤消)您所做的操作,例如插入、更新等。重新配置服务器不是事务可以回滚的内容。这就是为什么在事务中不允许这样做的原因。由于此处事务无法带来任何好处,因此请从脚本中删除它。


0

来自Technet

您可以在显式事务中使用所有的Transact-SQL语句,但以下语句除外:

enter image description here

您也不能使用以下内容:

Full-text system stored procedures in an explicit transaction.    

sp_dboption to set database options or use any system procedures that modify the master database inside explicit or implicit transactions.     

UPDATE STATISTICS can be used inside an explicit transaction. However, UPDATE STATISTICS commits independently of the enclosing transaction and cannot be rolled back.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接