天天看點

Sql Server資料庫事務介紹(一)---什麼是事務

      事務是單個的工作單元。如果某一事務成功,則在該事務中進行的所有資料修改均會送出,成為資料庫中的永久組成部分。如果事務遇到錯誤且必須取消或復原,則所有資料修改均被清除。

      舉個例子,比如你去銀行轉帳就是一個事務。轉帳可以簡單的分為兩個步驟,一是把錢從你的帳戶中扣除,二是把錢存到你指定轉帳的帳戶中。這兩個步驟就是一個事務,必須全部執行,或是全部不執行。如果從你帳戶扣錢成功,但是轉帳失敗,那麼你轉帳的錢就沒有了;如果是扣錢失敗了,但是轉帳成功了,那銀行就虧了。

       事務是作為單個邏輯工作單元執行的一系列操作。一個邏輯工作單元必須有四個屬性,稱為原子性、一緻性、隔離性和持久性 (ACID) 屬性,隻有這樣才能成為一個事務。

       原子性:事務必須是原子工作單元;對于其資料修改,要麼全都執行,要麼全都不執行。

       一緻性:事務在完成時,必須使所有的資料都保持一緻狀态。在相關資料庫中,所有規則都必須應用于事務的修改,以保持所有資料的完整性。事務結束時,所有的内部資料結構(如 B 樹索引或雙向連結清單)都必須是正确的。

       隔離:由并發事務所做的修改必須與任何其他并發事務所做的修改隔離。事務識别資料時資料所處的狀态,要麼是另一并發事務修改它之前的狀态,要麼是第二個事務修改它之後的狀态,事務不會識别中間狀态的資料。這稱為可串行性,因為它能夠重新裝載起始資料,并且重播一系列事務,以使資料結束時的狀态與原始事務執行的狀态相同。

      持久性:事務完成之後,它對于系統的影響是永久性的。該修改即使出現系統故障也将一直保持。

      SQL Server 以下列事務模式運作。

      自動送出事務:每條單獨的語句都是一個事務。

      顯式事務:每個事務均以 BEGIN TRANSACTION 語句顯式開始,以 COMMIT 或 ROLLBACK 語句顯式結束。

      隐式事務:在前一個事務完成時新事務隐式啟動,但每個事務仍以 COMMIT 或 ROLLBACK 語句顯式完成。

      批處理級事務:隻能應用于多個活動結果集 (MARS),在 MARS 會話中啟動的 Transact-SQL 顯式或隐式事務變為批處理級事務。當批處理完成時沒有送出或復原的批處理級事務自動由 SQL Server 進行復原。

      Sql Server中有三種使用事務的方法,分别是Sql語句,SqlTransaction和TransactionScope,下面一節将分别介紹這三種事務的使用方法。http://blog.csdn.net/tjvictor/archive/2009/04/14/4074240.aspx