亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在存儲過程中使用“SET XACT_ABORT ON”有什么好處?

在存儲過程中使用“SET XACT_ABORT ON”有什么好處?

大話西游666 2019-08-16 14:03:12
在存儲過程中使用“SET XACT_ABORT ON”有什么好處?SET XACT_ABORT ON在存儲過程中使用有什么好處?
查看完整描述

3 回答

?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

SET XACT_ABORT ON指示SQL Server回滾整個事務并在發生運行時錯誤時中止批處理。它涵蓋了在客戶端應用程序上發生的命令超時而不是SQL Server本身(默認XACT_ABORT OFF設置未涵蓋)的情況。

由于查詢超時將使事務保持打開狀態,SET XACT_ABORT ON因此建議在具有顯式事務的所有存儲過程中使用(除非您有特定的理由),因為應用程序在與開放事務的連接上執行工作的后果是災難性的。

Dan Guzman博客上有一個很棒的概述,


查看完整回答
反對 回復 2019-08-16
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

引用MSDN

當SET XACT_ABORT為ON時,如果Transact-SQL語句引發運行時錯誤,則終止并回滾整個事務。當SET XACT_ABORT為OFF時,在某些情況下,僅回滾引發錯誤的Transact-SQL語句并繼續處理事務。

實際上,這意味著某些語句可能會失敗,使事務“部分完成”,并且調用者可能沒有出現此類失敗的跡象。

一個簡單的例子:

INSERT INTO t1 VALUES (1/0)    INSERT INTO t2 VALUES (1/1)    SELECT 'Everything is fine'

此代碼將在XACT_ABORT OFF時“成功”執行,并在XACT_ABORT為ON時終止,錯誤將終止(“INSERT INTO t2”將不會執行,客戶端應用程序將引發異常)。

作為一種更靈活的方法,您可以在每個語句(舊學校)之后檢查@@ ERROR,或使用TRY ... CATCH塊(MSSQL2005 +)。我個人更喜歡在沒有理由進行某些高級錯誤處理時設置XACT_ABORT。


查看完整回答
反對 回復 2019-08-16
  • 3 回答
  • 0 關注
  • 1848 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號