在函数中设置事务隔离级别

5

当我想在SQL SERVER 2008的函数定义脚本的BEGIN子句后添加以下行:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

时,它会显示:

Invalid use of a side-effecting operator 'SET TRANSACTION ISOLATION LEVEL' within a function

如何在函数定义中实现此功能?
3个回答

6

你不能这样做。

你需要在调用函数的批处理开始时设置它。


4

除了从任何隔离级别切换到快照隔离级别之外,您可以在事务期间的任何时候切换隔离级别。这种情况会导致事务失败并回滚。但是,您可以将以快照隔离级别启动的事务更改为任何其他隔离级别。- 您是正确的- 我错过了这一点。如果OP取消接受答案,我将删除答案。 - Chris Shain
我已经撤回了我的DV,因为现在你已经接受了它。也许只需要编辑一下,使其正确无误。 - Martin Smith

2

你尝试过这个方法来绕过无法设置事务隔离级别的限制吗?

Select * from dbo.MyTable with (nolock)

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