0

たとえば、異なる環境 (異なるサーバー\インスタンス、同じデータベース名) で実行する必要があるパッケージがあります。

サーバー:live-db01\liveデシベル:Campaign

サーバー:dev-db01\livedebugデシベル:Campaign

パッケージ自体は、各環境で同一です。変更されるのは、サーバーの接続文字列だけです。これらのパッケージは適切な部門に送信され、サーバーに展開されます。

私の質問は、パッケージがlive-db01Integration Services インスタンスにインストールされているとしましょう。パッケージ内のこのサーバー情報にアクセスし、それに応じて接続文字列を設定する方法はありますか?

現在、同じパッケージを 4 つの異なる構成で展開していますが、XML .config の唯一の違いは接続文字列です。配置されているサーバーに基づいて接続文字列を動的に変更する構成なしで、単一のパッケージを配置する方法はありますか?

4

1 に答える 1

0

変数を使用して接続文字列の値を設定する場合は、スクリプト タスクを使用して変数を任意の値に設定できます。

スクリプト タスクは .net 基本クラスにアクセスできるため、System.Environment.MachineName に対してチェックを実行して、ホストを取得し、それに応じて構成を設定できます。

「CONNECTION_STRING」という文字列変数があり、次のようなスクリプト タスクを追加したとします。

 string hostName = System.Environment.MachineName;
        string connectionString = "";
        switch (hostName)
        {
            case "host1":
                connectionString = "SERVER=abc;Initial Catalog=blah;...";
                break;

            case "host2":
                connectionString = "SERVER=abc;Initial Catalog=blah;...";
                break;

            case "host3":
                connectionString = "SERVER=abc;Initial Catalog=blah;...";
                break;


        }
        Dts.Variables["CONNECTION_STRING"].Value = connectionString;

それはあなたが望むことをするはずです。式を使用するには、接続の Expressions プロパティに移動し、「ConnectionString」プロパティを変数「@[User::CONNECTION_STRING]」でオーバーライドします。接続の遅延検証を有効にすることができます。

于 2015-11-11T09:55:34.057 に答える