測試**:
set xact_abort offgobegin
tran
begin
try
delete
dbo.t
select
*from
[不存在的表]--
事務還在,t表被鎖
--select 1/0 --跳到catch中 回滾
print'11
'end
try
begin
catch
'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.的二級網域名稱開...