簡體   English   中英

SSIS序列容器交易選項

[英]SSIS Sequence container Transaction Option

我有一個非常簡單的SSIS程序包,只是一個數據導入和此后的執行SQL任務。 如果程序包的任何部分失敗,我想回滾所有內容,因此我將這些任務放入序列容器中,並將序列容器TransactionOption屬性設置為“ Required”,並將FailPackageonFailure屬性設置為“ True”。 當我定位到本地數據庫時,此方法運行良好。 但是,當我嘗試將OLE DB連接更改為遠程服務器時,上述屬性設置導致程序包掛起並最終失敗,並顯示消息“無法獲取連接”。 我在網上看到過類似的問題描述,但建議始終檢查連接。 但是我知道連接很好,因為當我將TransactionOption屬性更改回其默認值“ Supported”時,程序包運行良好。

有誰知道為什么會這樣? 我假設它與我要連接的服務器上的不同設置有關。 如果軟件包的任何部分出現故障,是否有人知道確保完全回滾的另一種方法。

謝謝閱讀

您需要使用分布式事務處理協調器。

The Distributed Transaction Coordinator (DTC) service coordinates transactions that update two or more transaction-protected resources, such as databases, message queues, files systems, and so on. These transaction-protected resources may be on a single computer or distributed across many networked computers.

因為您正在嘗試在服務器之間建立事務,所以它需要一項服務來協調SQL Server服務。 是有關如何執行操作的文章。

確保啟動和配置服務,並在Windows防火牆中為服務器之間的服務創建例外。

有關更多信息,請參見本文上的事務: http : //www.mssqltips.com/tip.asp?tip=1585

另外,您可能需要更多地研究MSDTC與SSIS相關的工作方式,以解決問題。

另外一個選項:

利用OLE DB連接的RetainSameConnection屬性,您可以在多個任務中在SSIS中運行常規SQL Server事務,而無需使用分布式事務處理協調器(DTC)。 傑米·湯姆森(Jamie Thomson) 在本文中向我們展示了方法。

這意味着您可以在一個執行SQL任務中開始事務,然后在另一項中選擇COMMIT或ROLLBACK。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM