我有一个可以在BIDS内运行的程序包(或者MS现在为SSIS调用VS),也可以从执行包实用程序运行。
我尝试使用以下代码从C#运行它,但没有任何反应。 .Execute返回成功,ExecutionStatus完成。 .Execute需要几秒钟,它应该花费一两分钟而且它不会执行它应该做的事情(加载源文件,将它们移动到其他地方等)。
var pkgLocation = @"C:\ImportMetricsPackage.dtsx";
var app = new Microsoft.SqlServer.Dts.Runtime.Application();
var pkg = app.LoadPackage(pkgLocation, null);
var pkgResults = pkg.Execute();
我错过了什么?
答案 0 :(得分:4)
您是否尝试捕获包事件?
MyEventListener eventListener = new MyEventListener();
var pkgLocation = @"C:\ImportMetricsPackage.dtsx";
var app = new Microsoft.SqlServer.Dts.Runtime.Application();
pkg = app.LoadPackage(pkgLocation, eventListener);
pkgResults = pkg.Execute(null, null, eventListener, null, null);
事件监听器类:
class MyEventListener : DefaultEvents
{
public override bool OnError(DtsObject source, int errorCode, string subComponent,
string description, string helpFile, int helpContext, string idofInterfaceWithError)
{
// Add application-specific diagnostics here.
Console.WriteLine("Error in {0}/{1} : {2}", source, subComponent, description);
return false;
}
}
有关详细信息,请参阅Loading and Running a Local Package Programmatically。