最近、私はissサーバー上のmssqlのコンパクトなデータベースファイルを更新する小さなアプリケーションを扱っています。File.CopyとFile.Moveの相違点
SSISを使用してフローを整理することをお勧めしました。数日間それはうまくいったが、その後エラーを出し始めた。
SSISでは、「ファイルシステムタスク」の「ファイルの移動」操作を使用して、生成されたファイルをフォルダからサーバーの共有フォルダに移動しました。失敗した場合は、ロックされたファイルの場合は、後で試行します。しかし、私は時々、宛先フォルダのファイルが消え始めたのを見ました。
私はカスタムコードを書くことに決めました。私は "File System Task"を削除し、代わりに "Script Task"を入れました。そしてそれに数行を書きます。
string destinationFile, sourceFile;
destinationFile = Path.Combine(Dts.Variables["FileRemoteCopyLocation"].Value.ToString(), Dts.Variables["CreatedFileName"].Value.ToString());
sourceFile = Path.Combine(Dts.Variables["OrginalFilePath"].Value.ToString(), Dts.Variables["CreatedFileName"].Value.ToString());
bool written = false;
try
{
File.Copy(sourceFile, destinationFile, true);
File.Delete(sourceFile);
written = true;
}
catch(IOException) {
//log it
}
if (written)
Dts.TaskResult = (int)ScriptResults.Success;
else
Dts.TaskResult = (int)ScriptResults.Failure;
これはうまくいきました。しかし、私は宛先ファイルをロックしてみました。私は、Sql Server Management Studio(sdfファイル)で宛先ファイルを接続しました。そして、驚くほどうまくいく。
そして、私はオペレーティングシステムから、ソースファイルをコピーしてそれをコピー先に貼り付けることで試しました。私はそれを上書きしたいと私に尋ね、私はイエスと言い、それは私が別のプロセスで使用するファイル(コピーと置き換え)を上書きしました。 名前を変更しようとすると削除してもそれはできません。または、切り取って貼り付けようとすると(「移動」と「置換」)、「この操作を実行する権限が必要です」と表示されます。
私が理解しているように、「コピー、削除」と「移動」は全く異なるものです。そして、私はまだロックされたファイルを上書きする方法を理解できません。
アイデア?
[ファイルコピーを行う際に/削除と移動の違い]の可能複製(http://stackoverflow.com:あなたはコピーの組み合わせを使用してメソッドにから
回答のorignalを削除することができ、これを克服するために/questions/6621956 /差異間のファイルコピーの削除と移動) – BrokenGlass
いいえ、File.Copyを使ってどのようにロックされたファイルを上書きすることができるのだろうか? 以下の2つのコードブロックが同じではない: 最初 'File.Copy(SOURCEFILE、destinationFile、TRUE); File.Delete(SOURCEFILE);' 第 'File.Delete(destinationFile);ファイル。移動(sourceFile、destinationFile); ' – fkucuk