4

同じ子パッケージを複数回実行する必要がある親パッケージがあります。より面白くするために、各インスタンスは、子パッケージに渡される親パラメーターに対して定義された異なる値を持つ必要があります。

次のスクリプトを使用してスクリプト タスクを作成しました。

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) この子パッケージに対してパッケージ実行タスクが開始されるたびに ParentVariable の値を変更する方法を理解するか、(b) SSIS パッケージ ストア内の適切なパッケージを参照する方法を理解する必要があります。ポイント適切な値を安全に渡すことができます。誰にもアイデアはありますか?

4

1 に答える 1

3

App.LoadPackage メソッドの代わりに、LoadFromSqlServerメソッドを使用します。

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

ApplicationPackageに関するドキュメントには、通常、私が使用する必要のあるメソッドの例が含まれています。

于 2013-04-05T11:51:08.690 に答える