2010-06-13 79 views

回答

0

事務用於保證一組操作(sql語句)全部執行(提交)或不執行(回滾)。

一個典型的用途是更新兩個或多個表必須全部成功(或全部失敗)。

2

交易確保一個工作塊以ACID的方式運作 - 全部或全部。

可選名稱在跟蹤長時間運行的事務時對DBA很有用。在TSQL 中直接使用這些名稱對於存儲點等而言更爲重要 - 但在OO世界中,您有一個對象。

isolation level決定如何它是酸。可串行化是最純粹的,但是在附加鎖(鍵範圍鎖等)方面具有更多開銷成本。

典型用法是:

using (SqlTransaction tran = conn.BeginTransaction()) 
{ 
    try 
    { 
     /* work here, assigning "tran" onto 
     * any commands */ 
     tran.Commit(); 
    } 
    catch 
    { 
     tran.Rollback(); 
     throw; 
    } 
} 

在許多方面,它更容易使用TransactionScope - 這將創建一個環境交易,到哪些命令自動徵用。它也可以跨越多個DBS等禮貌DTC:

using(TransactionScope tran = new TransactionScope()) 
{ 
    /* work here; no need to assign tran to anything */ 
    tran.Complete(); 
}