搜尋本站文章

2008-09-24

查詢是否有啟用 XACT_ABORT 選項


查詢是否有啟用 XACT_ABORT 選項

在設計交易程式時,可以利用 XACT_ABORT 選項,指定當 Transact-SQL 陳述式產生執行階段錯誤時,SQL Server 是否自動回復目前的交易。
依據預設值,每個連線並未啟用 XACT_ABORT。

所以有朋友詢問,要如何檢視是否有啟用 XACT_ABORT 呢?
建議:可以利用 DBCC USEROPTIONS:傳回目前連接在使用中 (已設定) 的 SET 選項。

請參考以下的範例碼:
USE master
GO

/*
DBCC USEROPTIONS
傳回目前連接在使用中 (已設定) 的 SET 選項。
*/
-- 預設僅顯示有啟用的SET 選項。未啟用的選項,並不會顯示出來。
DBCC USEROPTIONS;

-- 啟用 SET XACT_ABORT ON
/*
當 SET XACT_ABORT 是 ON 時,如果 Transact-SQL 陳述式產生執行階段錯誤,就會終止和回復整個交易。

當 SET XACT_ABORT 是 OFF 時,在某些情況下,只會回復產生錯誤的 Transact-SQL 陳述式,交易會繼續進行。
隨著錯誤嚴重性而不同,即使 SET XACT_ABORT 是 OFF,也有可能回復整個交易。OFF 是預設值。

SET XACT_ABORT 不會影響到如語法錯誤之類的編譯錯誤。
*/
SET XACT_ABORT ON

-- 多增加一筆記錄,有顯示 XACT_ABORT。
DBCC USEROPTIONS;


請參考下圖所示:檢查已經啟用 XACT_ABORT 選項。