2012-04-09 127 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)