20131014 出現錯誤,顯示事務沒有回滾

2021-09-06 12:22:48 字數 954 閱讀 9256

測試**:

set xact_abort off

gobegin

tran

begin

try

delete

dbo.t

select

*from

[不存在的表]--

事務還在,t表被鎖

--select 1/0 --跳到catch中 回滾

print'11

'end

try

begin

catch

print

'rollback

'select

@@error

rollback

endcatch

commit

/*問題:

1.select * from [不存在的表] 為什麼會直接跳出,不完成事務?

2.select * from [不存在的表] 是否屬於編譯錯誤?

3.修改為set xact_abort on 可以回滾,如果select * from [不存在的表]是編譯錯誤

那麼聯機文件中:編譯錯誤(如語法錯誤)不受 set xact_abort 的影響。如何解釋?

*/

問題:在乙個session中執行以上**,然後在另外乙個session執行 select * from t,發現select語句被堵塞

原因:sql 編譯的流程 parse->bind->optimize->execute

一般認為從parse到optimize 是編譯階段,execute是執行階段

猜測try catch不會再bind和optimize階段出現的錯誤進行捕獲,以上出現的錯誤可能不被認為是編譯錯誤,所以,使用 xact 為on是可以成功自動回滾

解決方法:

使用 set xact_abort on 來回滾事物

vs2010出現錯誤視窗

平台 wen7 32位 vs2010 問題 新建或開啟專案是出現下面提示視窗 本人解決辦法 網上有解決辦法,但是幾乎都是英文版的,看了還需要什麼解除安裝什麼的。但是,我只在開始的 搜尋檔案和程式 框中 就是 關機 左邊那個輸入視窗 輸入如下內容及解決 reg delete hkey local ma...

Apache2 2 php5 出現錯誤

apache2.2 php5 啟動apache2.2的時候提示loadmodules libphp5.so 這句附近有錯誤.鬱悶.檢查了好久也沒發現有多餘的字元或者單詞打錯的.而且這個 usr local apache2.2 modules libphp5.so檔案也是存在的.鬱悶.在網上查了一下有...

開啟CDN後登陸出現564錯誤

設定大都挺簡單,跟著自帶手冊引導足矣,乙個要注意的是,因為我開了一級網域名稱的郵箱網域名稱,所以一級網域名稱的mx已經被用了,再設定一級網域名稱跳轉到cdn伺服器會和mx記錄衝突,所以只能設定www.的二級網域名稱開啟cdn 這個問題其實一開始就應該解決好的。一開始就應該只留www.的二級網域名稱開...