天天看點

[20131014] 出現錯誤,顯示事務沒有復原

測試代碼:

問題:

  在一個session中運作以上代碼,然後在另外一個session運作 select * from T,發現select語句被堵塞

原因:

      sql 編譯的流程 Parse->Bind->Optimize->Execute

      一般認為從Parse到Optimize 是編譯階段,Execute是執行階段

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

解決方法:

     使用 SET XACT_ABORT ON 來復原事物