【问题标题】:Executing child package in SSIS package store from script task, with a twist从脚本任务执行 SSIS 包存储中的子包,有点扭曲
【发布时间】:2013-04-05 11:38:22
【问题描述】:

我有一个父包需要多次执行同一个子包。为了让事情变得更有趣,每个实例都需要为传递给子包的父参数定义不同的值。

我使用以下脚本创建了一个脚本任务:

Microsoft.SqlServer.Dts.Runtime.Application App = new Microsoft.SqlServer.Dts.Runtime.Application();
        Package pkg = new Package();

    try
    {
        pkg = App.LoadPackage(@"\\server\SSIS Packages\ChildPackage.dtsx", null);
        pkg.Variables["ChildVariableName"].Value = Dts.Variables["AParentVariableName"].Value;
        pkg.Execute();

        Dts.TaskResult = (int)ScriptResults.Success;
    }
    catch (Exception ex)
    {
        Dts.Events.FireError(0, "Run child pkg for parent task", ex.Message, string.Empty, 0);
        Dts.TaskResult = (int)ScriptResults.Failure;
    }

问题是,我的包存储在我的 SQL 2008 R2 服务器的 SSIS 包存储中,我不知道如何引用它们;我见过的每个代码示例都是针对物理位置的。这是在 HA 集群上,因此很难维护包的物理位置。

所以我要么需要 (a) 弄清楚每次为此子包启动 Execute Package 任务时如何更改 ParentVariable 的值,要么 (b) 弄清楚如何在 SSIS 包存储中引用正确的包,此时我可以安全地传递正确的值。有人有什么想法吗?

【问题讨论】:

标签: ssis sql-server-2008-r2


【解决方案1】:

您将使用LoadFromSqlServer 方法而不是 App.LoadPackage 方法

app.LoadFromSqlServer("\OptionalFolderButSlashRequired\ChildPackage", "server", null, null, null);

ApplicationPackage 上的文档通常有我需要使用的方法的示例。

【讨论】:

    猜你喜欢
    • 2016-11-16
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多