2012-04-09 106 views
4

当我想要添加的行SET事务隔离级别

SET事务隔离级别未提交读

开始我的功能定义脚本的条款之后在SQL Server 2008中, 它说:

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

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

回答

3

你不行。 UDFs do not support set operations.

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

+0

从http://msdn.microsoft.com/en-us/library/ms173763.aspx“有一个例外,你可以从一个隔离级别在任何时候交易过程中切换到另一个。发生异常当从任何隔离级别更改为SNAPSHOT隔离时,这会导致事务失败并回滚,但是,可以将在SNAPSHOT隔离中启动的事务更改为任何其他隔离级别。 - 你是对的 - 我错过了。如果OP将其标记为已接受,我会删除该答案 – 2012-04-09 19:48:01

+0

我已经收回了我的DV,因为您现在已经接受了它。也许只是编辑它,所以它是正确的。 – 2012-04-09 19:49:52

4

你不能。

您需要在调用该函数的批处理的开始处进行设置。

2

您是否尝试过这样做以避免无法设置事务隔离?

Select * from dbo.MyTable with (nolock)