交易升級
適用於:SQL Server
交易 升級 描述輕量型本機交易,可視需要自動升階為完全可散發的交易。 在伺服器上的資料庫交易內叫用 Managed 預存程式時,Common Language Runtime (CLR) 程式代碼會在本機交易的內容中執行。 如果在資料庫交易內開啟與遠端伺服器的連線,遠端伺服器的連線就會登記到分散式交易中,而本機交易會自動升階為分散式交易。 因此,交易升級會藉由延遲建立分散式交易,將分散式交易的額外負荷降到最低,直到需要為止。 如果已使用 Enlist 關鍵詞啟用交易升級,且不需要開發人員介入,則交易升級是自動的。 .NET Framework Data Provider for SQL Server 提供交易升級的支援,可透過 .NET Framework System.Data.SqlClient 命名空間中的類別來處理。
Enlist 關鍵詞
SqlConnection 物件的 ConnectionString 屬性支援 Enlist 關鍵詞,指出 System.Data.SqlClient 是否偵測交易內容,並自動在分散式交易中登記連接。 如果這個關鍵詞設定為 true(預設值),則連接會自動登記在開啟線程的目前交易內容中。 如果這個關鍵詞設定為 false,SqlClient 連線不會與分散式交易互動。 如果未在 連接字串 中指定 Enlist,如果在開啟連接時偵測到連接,連線就會自動編列在分散式交易中。
分散式交易
分散式交易通常會耗用大量的系統資源。 Microsoft分散式交易協調器 (MS DTC) 會管理這類交易,並整合在這些交易中存取的所有資源管理員。 另一方面,交易升級是 System.Transactions 交易的特殊形式,可有效地將工作委派給簡單的 SQL Server 交易。 System.Transactions、 System.Data.SqlClient 和 SQL Server 會協調處理交易所涉及的工作,並視需要將其提升為完整的分散式交易。
使用交易升級的優點是,當使用中 TransactionScope 交易開啟連線,且未開啟其他連線時,交易會認可為羽量型交易,而不會產生完整分散式交易的額外額外負荷。 如需 TransactionScope 的詳細資訊,請參閱使用 System.Transactions。