SSIS:スクリプトタスクの変数に作成日を追加
スクリプトタスクを使用して、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;
}
}
ただし、完了しても、変数に格納されている現在の日付のみが表示されます。どんな助けでもいただければ幸いです。
回答
これはよくある混乱のポイントです。
[変数]ウィンドウでは、SSIS変数を作成し、設計時の値を割り当てます。設計時の値はまさにそれであり、設計のみです。パッケージはこれらの値で初期化されますが、実行中に変更される可能性があります。パッケージが終了しても、現在の値はすべて実行時であるため、パッケージに保存されません。設計時間は一定のままです。

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

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