かなり長いタイトルで申し訳ありませんが、それは私が遭遇した問題を説明する最も簡単な方法のようです.
SSIS パッケージを生成するプログラムを C# で作成しようとしています。テンプレートとして使用できる既存のパッケージがあり、既存のパッケージには、環境変数を使用して設定された他の変数を使用する変数があります。たとえば、「RootFolder」という名前の変数があり、環境変数を使用して設定され、パッケージの作業フォルダーを確立します。パッケージには「OutputFolder」という名前の別の変数があり、これは RootFolder 変数の値を取り、文字列「\Output」を追加します。元の開発者は BIDS Helper を使用して、OutputFolder に次の式を設定しました: @[Template::RootFolder] + "\Output\"
変数が作成される前に環境変数が設定されていないように見えるため、C#でこれを構築する際に少し問題が発生したため、子変数には追加されたデータしかないように見えます。上記の例を使用すると、「OutputFolder」変数は「\OutPut\」に等しくなります。
環境変数を指すように構成を設定し、RootFolder から変数をスタックするために使用しているコードのスニペットを次に示します。
pkg.Variables.Add("FolderRoot", false, "Template", "");
Configuration configRootFolder = pkg.Configurations.Add();
configRootFolder.Name = @"RootFolder";
configRootFolder.ConfigurationType = Microsoft.SqlServer.Dts.Runtime.DTSConfigurationType.EnvVariable;
configRootFolder.ConfigurationString = @"Ssis_RootFolder";
configRootFolder.PackagePath = "\\Package.Variables[Template::FolderRoot].Properties[Value]";
pkg.Variables.Add("OutputFolder", false, "Template", pkg.Variables["Template::FolderRoot"].Value + "\\Output\\");
どんな援助でも大歓迎です。前もって感謝します!リッチ
編集:申し訳ありませんが、重要な詳細を見逃していることに気付きました:
- プログラムを使用してパッケージが作成された後、RootFolder 変数は環境変数を呼び出して適切に設定され、Visual Studio で表示されます。