程序运行SSIS执行包任务:Microsoft.SqlServer.Dts.Runtime.TaskHost中的错误:没有要引用的项目

时间:2014-11-28 16:56:31

标签: c# ssis

我需要在代码中以编程方式运行 Execute Package Task 。 我收到以下错误:

Error in Microsoft.SqlServer.Dts.Runtime.TaskHost/ : 
There is no project to reference.
Error in Microsoft.SqlServer.Dts.Runtime.TaskHost: 
There were errors during task validation.
Failure

如果我将Execute Package Task ReferenceType设置为,则只会出现此错误 Project Reference

但是,如果我将ReferenceType设置为External Reference,则不会发生错误并且包已成功运行。

我需要知道为什么会出现这种错误,为什么我不能使用 Project Reference

以下屏幕截图显示导致错误的设置:

enter image description here

以下设置不会导致错误:

enter image description here

最后,我的代码以编程方式运行任务:

class Program
{
    class MyEventListener : DefaultEvents
    {
        public override bool OnError(DtsObject source, int errorCode, string subComponent,
            string description, string helpFile, int helpContext, string idofInterfaceWithError)
        {
            Console.WriteLine("Error in {0}/{1} : {2}", source, subComponent, description);
            return false;
        }
    }

    static void Main(string[] args)
    {
        string pkgLocation;
        Package pkg;

        Application app;
        DTSExecResult pkgResults;

        MyEventListener eventListener = new MyEventListener();

        pkgLocation =
            @"C:\Users\Administrator\Desktop\ExampleConnectionMgr\Master.dtsx";
        app = new Application();
        pkg = app.LoadPackage(pkgLocation, eventListener);
        pkgResults = pkg.Execute(null, null, eventListener, null, null);

        Console.WriteLine(pkgResults.ToString());
        Console.ReadKey();

    }
}

1 个答案:

答案 0 :(得分:1)

这是由于您正在SSIS项目的上下文之外执行包。两个.dtsx包彼此不了解。当您选择“Project Reference”作为ReferenceType时,系统会查找同一项目的其他包成员,这就是DataExtractionB.dtsx是可用选项的原因。