2013-01-09 31 views
2

我使用SSIS內置的交易方案是如下SSIS分佈式事務錯誤「無法獲得連接

有同一服務器上的兩個數據庫,我需要把它們合併(INSERT/UPDATE) 我使用SQL合併子句來完成這個工作,只有少量的主表,每個子表都有一對子表。合併語句首先在主表上運行,然後對子表執行ExecuteSQL任務。子表ExecuteSQL以並行方式運行。

雖然這樣做我得到失敗獲取連接和任務失敗的並行運行任務之一。不知道是什麼原因。

RetainSameConnection設置爲false,如果我將其設置爲True,它會使「事務上下文正在被另一個會話使用」錯誤。

據我所知,我不需要RetainSameConnection = True,因爲它只在基於本地TSQL的事務中需要。 DTC已啓用並正在運行。

並非所有的任務在我的包中失敗,這表明它以某種方式成功獲取連接失敗並行任務。

+0

如果我在Sequence中運行所有子合併語句,它的工作原理 – InTheWorldOfCodingApplications

+0

沒有人願意嘗試 – InTheWorldOfCodingApplications

+0

使用'sql profiler '並檢查哪個查詢導致問題。我認爲由於表鎖並行您的子任務在獲取連接方面存在問題 – praveen

回答

0

「無法獲取連接」消息幾乎總是因爲您有一項任務在正確安裝之前驗證連接。

在大多數SSIS項目中,您的連接綁定到本地數據庫用於開發目的。然後,你有表達式,變量,腳本任務或類似的東西,在運行時設置真正的連接。

當程序包開始執行時,每個有「DelayValidation」屬性設置爲「False」(缺省值!)的組件都會在執行任何任務之前嘗試連接到數據源,這意味着它會嘗試連接到您在開發環境中設置的數據庫,然後更新其屬性...

相關問題