2013-11-27 39 views
0

我創建了一個SSIS包來從OLAP多維數據集中提取數據並使用SSIS 2012將其推入SQL Server。我在SQL Server SSIS數據庫上部署了相同的服務器,並創建了SQL Server代理運行包的作業。我有一個帳戶配置爲運行作業(不是通過在作業中創建代理,而是在該帳戶下運行SQL Server代理),該帳戶可以訪問OLAP多維數據集。這項工作有時候會跑,有時候會失敗。間歇性地運行SSISDB上的包的SQL Server代理作業

爲什麼這項工作表現怪異?任何關於這個問題的幫助都會幫助我很多。

我正在使用SQL Server 2012 SP1企業版(11.0.3000.0)(如果有幫助)。當它失敗時會彈出錯誤信息是:

OLE DB源故障前執行階段,並返回錯誤代碼爲0xC0202009

SSIS錯誤代碼DTS_E_OLEDBERROR。發生了OLE DB錯誤。錯誤代碼:0x80040E05。 OLE DB記錄可用。源:「」用於SQL Server 2012 Analysis Services的Microsoft OLE DB提供程序。「」Hresult:0x00000001說明:「」錯誤代碼= 0x80040E05,外部代碼= 0x00000000 :.「」。 「

回答

0

我已經對SQL2008同樣的錯誤,現在在SQL2012 SSIS,但已經能夠消除/解決方法。

我們在包含一個數據流任務與我們的控制流有一個循環容器一個MDX源,數據流源的MDX查詢是在Loop容器的每次迭代中動態構建的(但是它總是返回「相同形狀」的結果 - 只有WHERE子句中的過濾器不同)

我們發現錯誤是有點間歇的 - 有時程序包會成功完成,有些時候它會在不同的iterati時發生0x80040E05錯誤通過容器循環。

爲了緩解這個問題,我們爲這個軟件包設置了SQL Agent作業步驟,重新嘗試多達5次重試失敗 - 這不是一個理想的解決方法,但它有助於提高作業的成功率。

我們不知道爲什麼這個錯誤正在發生,或者是什麼原因導致它,但它似乎是以某種方式與時間有關,並且我只在使用動態生成的SSAS OLE-DB數據源時看到了問題MDX查詢。我已經設法消除了在SSIS包中不理想的解決方案中發生的錯誤 - 不知道爲什麼這會起作用/有幫助(希望微軟能夠解決這個問題,因爲它自SQL2008以來一直困擾着我們,還是要在SQL2012 SP1 ...

變通方法MDX造成0x80040E05錯誤:

在我們的循環容器,我們增加了一個腳本任務用的onSuccess先例約束到包含動態生成的MDX源中的數據流任務查詢。腳本任務簡單介紹了在約5秒,數據流任務完成後,立即處理的等待讓SSIS繼續下一個迭代之前(如System.Threading.Thread.Sleep(5000))。

有了這個延遲,我們有更加穩定的SSIS包的執行 - 不知道爲什麼,但是這就是我們所觀察到。另請注意,當我們遷移到SQL2012 SSIS包時,0x80040E05錯誤返回,但是我們可以通過將此等任務的等待時間增加到10秒再次消除它。

現在等待10秒對於這個問題並不是一個理想的解決方案/解決方法 - 特別是當它包含在循環容器中時(在我們的例子中,它已經爲程序包執行持續時間添加了近30分鐘的「等待時間」) ,但是這種解決方法比使包失敗80%+的時間更好

相關問題