測試代碼:
問題:
在一個session中運作以上代碼,然後在另外一個session運作 select * from T,發現select語句被堵塞
原因:
sql 編譯的流程 Parse->Bind->Optimize->Execute
一般認為從Parse到Optimize 是編譯階段,Execute是執行階段
猜測try catch不會再Bind和Optimize階段出現的錯誤進行捕獲,以上出現的錯誤可能不被認為是編譯錯誤,是以,使用 xact 為on是可以成功自動復原
解決方法:
使用 SET XACT_ABORT ON 來復原事物