在函数内设置TRANSACTION ISOLATION LEVEL

时间:2012-04-09 19:19:04

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

当我想添加行

  

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

在SQL SERVER 2008中我的函数定义脚本的BEGIN子句之后, 它说:

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

如何在功能定义中实现此功能?

3 个答案:

答案 0 :(得分:4)

你不能。

您需要在调用该函数的批处理的开头设置它。

答案 1 :(得分:3)

你做不到。 UDFs do not support set operations.

函数总是在事务的上下文中执行(隐式或显式),并且一旦事务开始就不能更改事务的隔离级别。

答案 2 :(得分:2)

您是否尝试过此操作以避免设置事务隔离?

Select * from dbo.MyTable with (nolock)