2016-02-19 71 views
0

XACT_STATE()可能具有1,0,1值。當它是1時,可以執行任何操作,但是當它是-1時,只能執行讀取或回滾。在哪種情況下,交易被分類爲不可提交的交易。發生了導致事務被歸類爲不可提交事務的錯誤

Here是msdn說的。

當前請求具有一個活躍的用戶的交易,而是一個錯誤已發生 已經導致事務被分類爲 提交的事務。該請求無法提交事務 或回滾到保存點;它只能請求完整回滾 的交易。直到 它回滾事務,該請求才能執行任何寫入操作。該請求只能執行讀取 操作,直到它回退事務。在回滾事務 後,該請求可以執行讀取和寫入操作,並可以開始新的事務。

回答

1

blog摘自:

當你的交易安打等級16錯誤交易可能進入註定狀態(XACT_STATE()= -1),但並不總是如上所述!下面

在博客給出一些例子:

--datatype conversion errors: 

    DECLARE @GUID UNIQUEIDENTIFIER 
    SELECT @GUID = CONVERT(UNIQUEIDENTIFIER, 'ABC') 

---divide by zero errors: 
    SELECT * FROM my_books WHERE Isbn/0 = 2 

--dropping column which doesnt exists  
ALTER TABLE my_books DROP COLUMN author;  

筆者也解釋了低於其他錯誤水平,這可能會導致交易被註定..

可能有很多的錯誤,可能讓交易進入註定的狀態! 用戶可以參考此博客作爲參考,以確定嚴重級別爲16級的錯誤是否會回滾事務。如果你願意,你還可以與其他的嚴重程度或水平

一個更link將在模擬的每個錯誤級別幫助測試錯誤..