sqlserver查看事務
⑴ 什麼是sqlSERVER事務處理和事務回滾
事務(Transaction)是訪問並可能更新資料庫中各種數據項的一個程序執行單元(unit)。事務通常由高級資料庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執行所引起,並用形如begin transaction和end transaction語句(或函數調用)來界定。事務由事務開始(begin transaction)和事務結束(end transaction)之間執行的全體操作組成。
當一個事務的某一個操作發生問題時,整個事務可以回滾掉,就像沒有做任何操作一樣。這就是事務回滾。
如果一個事務的所有操作均成功,則就可以提交事務,保證事務的完整性。
應用程序主要通過指定事務啟動和結束的時間來控制事務。
以MS SQL Server的Transac-SQL語言為例,
事務啟動:
BEGIN TRAN [ SACTION ] [ transaction_name | @tran_name_variable [ WITH MARK [ 'description' ] ] ]
結束事務
可以使用 COMMIT 或 ROLLBACK 語句結束事務。
1 事務的提交
BEGIN TRANSACTION T1
INSERT tabel1 ...
UPDATE table2 ...
...
/* 當所有成功操作完成,提交事務 */
COMMIT TRAN T1
2 事務的回滾
BEGIN TRANSACTION T1
INSERT tabel1 ...
...
/* 當發生錯誤或事務被取消, 回滾事務 */
ROLLBACK TRAN T1
⑵ sql的事務問題
如果沒有猜錯,樓主應該是在執行COMMIT TRANSACTION tran3 後,直接在當前的查詢界面查看的表裡的數據吧?對於當前會話,即使你沒有執行COMMIT,所有數據都會在當前的會話里發生變化,你可以不執行COMMIT TRANSACTION tran3,直接查看錶里的數據,你會看到即使沒有提交任何事物,表裡的數據還是發生變化了。如果你再打開一個查詢窗口,你會發現直接從testtran 表裡select數據是會一直等待的,因為其它會話(也就是開始你執行begin tran那個會話)有事務沒有提交,表是鎖定的。事務是用來保證多個會話之間不會應為事務不一致而產生臟數據。對同一會話,是看不出效果的。