尝试自动执行当前两个步骤的流程。首先,我们在(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)
答案 0 :(得分:1)
我最终解决的答案是“使用SqlBulkCopy而不是SSIS”。我已经创建了包含所有数据的对象,因此只需批量复制到数据库而不是写入SSIS用于更新数据库的文本文件。
我找到了这篇很棒的文章http://blogs.msdn.com/b/nikhilsi/archive/2008/06/11/bulk-insert-into-sql-from-c-app.aspx,它完成了所有步骤并且运作得非常好。