根事務(wù)要確認(rèn),但事務(wù)中止了操作—解決辦法
根事務(wù)要確認(rèn),但事務(wù)中止了操作—解決辦法
?
SQL 報(bào)如上的錯(cuò)誤:是因?yàn)?沒有使用 SET XACT_ABORT ON
?
begin?tran/***/commit?tran 之前使用了?SET XACT_ABORT ON?才能回滾
?
?
----------------------------
當(dāng) SET XACT_ABORT 為 ON 時(shí),如果 Transact-SQL 語句產(chǎn)生運(yùn)行時(shí)錯(cuò)誤,整個(gè)事務(wù)將終止并回滾。為 OFF 時(shí),只回滾產(chǎn)生錯(cuò)誤的 Transact-SQL 語句,而事務(wù)將繼續(xù)進(jìn)行處理。編譯錯(cuò)誤(如語法錯(cuò)誤)不受 SET XACT_ABORT 的影響。
對(duì)于大多數(shù) OLE DB 提供程序(包括 SQL Server),隱性或顯式事務(wù)中的數(shù)據(jù)修改語句必須將 XACT_ABORT 設(shè)置為 ON。唯一不需要該選項(xiàng)的情況是提供程序支持嵌套事務(wù)時(shí)。有關(guān)更多信息,請(qǐng)參見分布式查詢和分布式事務(wù)。
SET XACT_ABORT 的設(shè)置是在執(zhí)行或運(yùn)行時(shí)設(shè)置,而不是在分析時(shí)設(shè)置。