我只是假装使用来自C#的SSIS& * .dtsx文件。现在我有了这个代码的WindowsForms项目和OnClick处理程序:
.....
string pkgLocation;
Package pkg;
Microsoft.SqlServer.Dts.Runtime.Application app;
DTSExecResult pkgResults;
DTSEvents dtsEvents=new DTSEvents();
pkgLocation = System.Windows.Forms.Application.StartupPath+ @"\" + @"3StreamsImport.dtsx";
app = new Microsoft.SqlServer.Dts.Runtime.Application();
app.PackagePassword = "abudfv";
app.EnableDump = true;
app.DumpOnAnyError = true;
pkg = app.LoadPackage(pkgLocation, dtsEvents,true);
try {
pkgResults = pkg.Execute(null,null,dtsEvents,null,null);
}catch(System.Runtime.InteropServices.COMException ex) {
Console.WriteLine(ex.StackTrace);
}
.......
“3Streamsimport.dtsx”文件是使用SqlServer管理工作室为SqlServer 2016创建的,并且从标准的ЕxecutePackageUtility可以正常工作。在我的代码中加载包也很好。但总是执行失败! dtsEvents是实现IDTSEvents接口的所有对象的instanceof。 亲爱的所有人,谁能帮助解决问题的方法定义?
答案 0 :(得分:1)
自从我尝试以来已经有一段时间了,所以我不知道后来的版本是否有任何改进,但是我从来没有能够像你想要的那样从C#执行SSIS包。
我最终做的是创建一个执行包的工作,并使用C#来启动工作。它运作良好。
答案 1 :(得分:0)
解决了! 所有C#代码都没问题。另外我实现了IDTSLogging。将“exectute”调用更改为
后pkgResults = pkg.Execute(null,null,dtsEvents,new DTSLogging(),null);
所有事件都顺利开火。我不知道/为什么,但它正在发挥作用。 现在关于DTSX文件:这是我在项目中的错误,正确的副本只是在其他地方! :-( 对不起: - (