Share via


使用交易確保資料的完整性

封裝使用交易將工作執行的資料庫動作繫結至最小基本單位,這樣可以保持資料的完整性。因為屬於交易一部份的所有資料庫動作都會一起認可或回復,所以您可以確保資料仍然處於一致狀態。例如,具有多個「資料流程」工作 (每個工作都會將資料更新和插入到不同的資料庫資料表中) 的封裝可以使用交易來保證資料流程中執行的所有變更都會得到認可或回復。分散式交易將這一概念又推進了一步,它允許您將多個作業系統上的不同作業繫結為單一交易。

您可將封裝中的交易用於下列用途:

  • 將數個工作的結果蒐集為單一交易,以確保一致更新。例如,儲存在兩個不同資料表中的訂單和明細項目資訊可以由兩個同時成功或失敗的工作上傳。

  • 確定多個資料庫伺服器上的一致更新。例如,改變一個顧客的住址可以只用一個交易,就可同時在兩個不同的線上交易處理 (OLTP) 系統完成。

  • 保證非同步環境中的更新。例如,封裝可能會使用「訊息佇列」工作,讀取和刪除具有要上傳之檔案名稱的訊息。如果上傳檔案的工作失敗,則後續回復會回復資料庫變更,並將訊息傳回佇列。

  • 在單一封裝的控制下進行多重交易。例如,利用「執行封裝」工作,您可以同時在三個不同的伺服器上執行當日的交易序列。

所有 Microsoft Integration Services 容器型別 (封裝、「For 迴圈」、「Foreach 迴圈」和「時序」容器,以及封裝每個工作的工作主機) 都可以設定為使用交易。Integration Services 會提供設定交易的三個選項:NotSupportedSupportedRequired

  • Required 指出容器會啟動交易,除非其父容器已經將其啟動。如果交易已經存在,則容器會聯結交易。例如,如果未設定為支援交易的封裝包括使用 Required 選項的「時序」容器,則「時序」容器會啟動其自己的交易。如果封裝設定為使用 Required 選項,則「時序」容器會聯結封裝交易。

  • Supported 指出容器不啟動交易,但會聯結其父容器啟動的任何交易。例如,如果具有四個「執行 SQL」工作的封裝啟動交易,且全部四個工作都使用 Supported 選項,則任何工作失敗時,都會回復「執行 SQL」工作執行的資料庫更新。如果封裝未啟動交易,則四個「執行 SQL」工作不會由交易繫結,且只會回復由失敗之工作執行的資料庫更新。

  • NotSupported 指出容器不啟動交易或聯結現有的交易。父容器啟動的交易不會影響已設定為不支援交易的子容器。例如,如果封裝設定為啟動交易,且封裝中的「For 迴圈」容器使用 NotSupported 選項,則「For 迴圈」中的工作一旦失敗將無法回復。

您可以設定容器上的 TransactionOption 屬性來設定交易。使用 Business Intelligence Development Studio 中的 [屬性] 視窗,可以設定此屬性,也可以程式設計方式設定屬性。如需詳細資訊,請參閱<開發人員手冊 (Integration Services)>。

[!附註]

TransactionOption 屬性會影響容器所要求的 IsolationLevel 屬性值是否會套用。如需詳細資訊,請參閱<設定封裝屬性>主題中的 IsolationLevel 屬性描述。

若要設定封裝使用交易

外部資源

Integration Services 圖示 (小) 掌握 Integration Services 的最新狀態

若要取得 Microsoft 的最新下載、文件、範例和影片以及社群中的選定解決方案,請瀏覽 MSDN 或 TechNet 上的 Integration Services 頁面:

若要得到這些更新的自動通知,請訂閱該頁面上所提供的 RSS 摘要。