C#SSIS pkg.Execute(null,null,dtsEvents,null,null)返回“失败”,没有事件

时间:2017-11-29 13:22:07

标签: c# ssis

我只是假装使用来自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。 亲爱的所有人,谁能帮助解决问题的方法定义?

2 个答案:

答案 0 :(得分:1)

自从我尝试以来已经有一段时间了,所以我不知道后来的版本是否有任何改进,但是我从来没有能够像你想要的那样从C#执行SSIS包。

我最终做的是创建一个执行包的工作,并使用C#来启动工作。它运作良好。

答案 1 :(得分:0)

解决了! 所有C#代码都没问题。另外我实现了IDTSLogging。将“exectute”调用更改为

pkgResults = pkg.Execute(null,null,dtsEvents,new DTSLogging(),null);

所有事件都顺利开火。我不知道/为什么,但它正在发挥作用。 现在关于DTSX文件:这是我在项目中的错误,正确的副本只是在其他地方! :-( 对不起: - (