0

试图自动化目前是两个步骤的过程。首先,我们有一个 (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 加载时出错。由于没有传递事件对象,因此无法为此问题指定更多详细的错误信息。可以存储详细的错误信息。”。当 CPackage::LoadFromXML 失败时会发生这种情况。

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

4

1 回答 1

1

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

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

于 2012-12-18T14:23:31.903 回答