2012-12-14 52 views
0

嘗試自動執行當前兩個步驟的過程。首先,我們在(VS 2010)C#中有一個應用程序,它從供應商處下拉價格目錄,按摩數據並創建一個.txt文件。其次,我們有一個SSIS項目(VS 2008),它在(SQL Server 2005)數據庫中清空一個表並從.txt文件中重新填充它。從C#Visual Studio 2010調用SSIS包。獲取錯誤0xC0011008

我想通過從應用程序調用SSIS項目來結合這些步驟。如果有更好的方式將按摩數據導入數據庫,我願意接受建議。

我使用的方法是在這裏:

private static void UpdateVendorTable() 
{ 
    string pkgLocation; 
    Package pkg; 
    Application app; 
    DTSExecResult pkgResults; 

    pkgLocation = appConfig.Default.DataSSIS; // C:\Projects\Vendor\vendor.dtsx 
    app = new Application(); 
    pkg = app.LoadPackage(pkgLocation, null); 
    pkgResults = pkg.Execute(); 
} 

不過,我回來如下圖所示的錯誤時,「pkgLocation = appConfig.Default.DataSSIS;」行已到達。

由於錯誤0xC0011008導致程序包加載失敗「從XML加載出錯,無法爲此問題指定更詳細的錯誤信息,因爲沒有事件對象被傳遞到可以存儲詳細錯誤信息的位置。這發生在CPackage :: LoadFromXML失敗時。 此異常具有一個InnerException:System.Runtime.InteropServices.COMException(0xC0011008):由於錯誤0xC0011008而導致程序包加載失敗「從XML加載時出錯」無法爲此問題指定更多詳細的錯誤信息,因爲沒有傳入Events對象在那裏可以存儲詳細的錯誤信息。「這發生在CPackage :: LoadFromXML失敗時。

在Microsoft.SqlServer.Dts.Runtime.Wrapper.ApplicationClass.LoadPackage(字符串文件名,布爾loadNeutral,IDTSEvents90 pEvents) 在Microsoft.SqlServer.Dts.Runtime.Application.LoadPackage(字符串文件名,IDTSEvents事件,布爾loadNeutral )

回答

0

我最終解決的答案是「使用SqlBulkCopy而不是SSIS」。我已經創建了包含所有數據的對象,因此只需批量複製到數據庫而不寫入SSIS將用於更新數據庫的文本文件。

我發現了這篇不錯的文章http://blogs.msdn.com/b/nikhilsi/archive/2008/06/11/bulk-insert-into-sql-from-c-app.aspx,它經歷了所有的步驟,它的工作非常出色。

+0

可以批量複製sql到ms的訪問權限嗎?如果可以的話可以提供鏈接嗎?謝謝 – Androidz