SSIS:スクリプトタスクの変数に作成日を追加

Aug 20 2020

スクリプトタスクを使用して、SSISでファイルの作成日を取得しようとしています。「User :: File_Created」という名前の変数を作成し、その変数を次のスクリプトタスクに追加しました。

        public void Main()
        {
            string fileName = @"[FilePath]";
            FileInfo fi = new FileInfo(fileName);

            if (Dts.Variables.Contains("User::File_Created") == true)
            {
                Dts.Variables["User::File_Created"].Value = fi.CreationTime;
            }
        }

ただし、完了しても、変数に格納されている現在の日付のみが表示されます。どんな助けでもいただければ幸いです。

回答

3 billinkc Aug 21 2020 at 22:24

これはよくある混乱のポイントです。

[変数]ウィンドウでは、SSIS変数を作成し、設計時の値を割り当てます。設計時の値はまさにそれであり、設計のみです。パッケージはこれらの値で初期化されますが、実行中に変更される可能性があります。パッケージが終了しても、現在の値はすべて実行時であるため、パッケージに保存されません。設計時間は一定のままです。

実行時の値を表示するには、[ローカル]ウィンドウを表示し、[変数]コレクションノードを展開すると、現在のすべての値を表示できます(または監視を設定できます)。ここでは、緑色のノード(変数の値をZYXに設定する式タスク)があり、[変数]ウィンドウにABCが表示されていますが、[ローカル]ウィンドウにはZYXの真の値が反映されているため、パッケージが処理中であることがわかります。

パッケージのデバッグ中に[ローカル]ウィンドウにアクセスするには、[デバッグ]メニューをクリックし、[Windows]で[ローカル]を選択します。 https://docs.microsoft.com/en-us/visualstudio/debugger/autos-and-locals-windows?view=vs-2019