編集
以下のソリューションでは、ローカル ファイル ロックをチェックしていました。この場合の解決策は、完全なファイルがロードされ、ダウンロードの準備が整った後で、小さなフラグ ファイルを FTP サーバーに投稿するようベンダーに依頼することです。ファイル全体のダウンロードを開始する前に、フラグ ファイルの存在を確認してください。
編集を終了
スクリプト タスクで以下を使用して、ファイルのロックを確認しました。
public void Main()
{
// TODO: Add your code here
string strTracePath = Dts.Variables["uv_TraceFilePath"].Value.ToString();
FileInfo fInfo = new FileInfo(strTracePath);
try
{
Dts.Variables["uv_TraceFileSize"].Value = fInfo.Length;
fInfo.MoveTo(strTracePath + "_old");
FileInfo fInfoOld = new FileInfo(strTracePath + "_old");
fInfoOld.MoveTo(strTracePath);
Dts.Variables["uv_ProcessTraceFile"].Value = true;
}
catch
{
Dts.Variables["uv_ProcessTraceFile"].Value = false;
}
Dts.TaskResult = (int)ScriptResults.Success;
}
タスクは、名前を変更しながらファイルを (同じフォルダーに) 移動しようとします。これが成功すると、元の名前に戻されます。成功すると、変数が true に設定されます。失敗すると、変数が false に設定されます。このタスクを終えたら、条件付き優先順位制約を使用して次に何をすべきかを決定します。これを機能させるためUsing System.IO;
に、スクリプトの先頭に宣言を追加しました。