在C#自定义应用程序中以编程方式禁用SSIS任务

时间:2018-10-12 12:01:03

标签: c# winforms ssis

我正在构建一个Windows窗体应用程序,该应用程序执行选定的程序包,所有程序包都发送邮件。我想添加选项让用户 禁用所选软件包的发送邮件任务。

我正在使用vs 2015集成服务来构建软件包。

执行程序包的代码:

        string pkgLocation = @" C:\temp\Testing\"+ PackageName + ".dtsx";
        Package Package = new Package();
        Microsoft.SqlServer.Dts.Runtime.Application app;           
        DTSExecResult res;


        Cursor.Current = Cursors.WaitCursor;

        app = new Microsoft.SqlServer.Dts.Runtime.Application();

        PackageEvents packageEvents = new PackageEvents();
        Package.EnableConfigurations = true;
        Package = app.LoadPackage(pkgLocation, packageEvents);

        res = Package.Execute();
        Cursor.Current = Cursors.Default;

        if (res == DTSExecResult.Success)
        {
           //code
        }
        else if (res == DTSExecResult.Failure)
        {
           //code
        }

是否可以从应用程序中禁用任务?

1 个答案:

答案 0 :(得分:0)

我在网上找到了另一个解决方案。这很简单。我遍历了软件包中的所有可执行文件,如果任务是我要寻找的任务,请将disable属性设置为false。这是下面的代码。

for (int i = 0; i < Package.Executables.Count; i++)
    {
     if ((TaskHost)Package.Executables[i] == (TaskHost)Package.Executables["Send Mail Task"])
         {
            var task = (TaskHost)Package.Executables["Send Mail Task"];
            task.Properties["Disable"].SetValue(task, true);
            break;
         }
     }

谢谢您的帮助。