从C#Visual Studio 2010调用SSIS包。获取错误0xC0011008

时间:2012-12-14 14:20:16

标签: c# sql-server visual-studio-2010

尝试自动执行当前两个步骤的流程。首先,我们在(VS 2010)C#中有一个应用程序,它从供应商处下载价格目录,按摩数据并创建.txt文件。其次,我们有一个SSIS项目(VS 2008),它清空(SQL Server 2005)数据库中的表并从.txt文件中重新填充它。

我正在尝试通过从应用程序调用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失败时会发生这种情况。

at Microsoft.SqlServer.Dts.Runtime.Wrapper.ApplicationClass.LoadPackage(String FileName,Boolean loadNeutral,IDTSEvents90 pEvents)    在Microsoft.SqlServer.Dts.Runtime.Application.LoadPackage(String fileName,IDTSEvents事件,布尔loadNeutral)

1 个答案:

答案 0 :(得分:1)

我最终解决的答案是“使用SqlBulkCopy而不是SSIS”。我已经创建了包含所有数据的对象,因此只需批量复制到数据库而不是写入SSIS用于更新数据库的文本文件。

我找到了这篇很棒的文章http://blogs.msdn.com/b/nikhilsi/archive/2008/06/11/bulk-insert-into-sql-from-c-app.aspx,它完成了所有步骤并且运作得非常好。