ファイルをbcpするためにinvoke-sqlcmdを使用しています。ファイルを作成する前にファイルを削除しようとした場合を除いて、すべてがフィンとダンディのように見えます。その後、ファイルが使用可能になるまでランダムな時間がかかります。理由はありますか?
コードの誤り (もちろん、 $dir と $sql_srv を独自の値に置き換えてください)
$dir = "\\srv-ocmr\d$\temp\"
$sql_srv = "srv-ocmr\rec1ocm"
if (test-path $($dir+"*.dat")) {remove-item $($dir+"*.dat") } # culprit line
$str = $("bcp sysobjects out " + $dir + "so.dat -S" + $sql_srv + " -T -N " )
invoke-sqlcmd -ServerInstance $sql_srv -Query "exec xp_cmdshell '$str' " -Database master -Verbose
while (-not (test-path $($dir+"*.dat"))) {
sleep -Seconds 1
test-path $($dir+"*.dat")
}
犯人行を削除すると、ほら、すべてが魅力として機能します。
$dir = "\\srv-ocmr\d$\temp\"
$sql_srv = "srv-ocmr\rec1ocm"
$str = $("bcp sysobjects out " + $dir + "so.dat -S" + $sql_srv + " -T -N " )
invoke-sqlcmd -ServerInstance $sql_srv -Query "exec xp_cmdshell '$str' " -Database master -Verbose
while (-not (test-path $($dir+"*.dat"))) {
sleep -Seconds 1
test-path $($dir+"*.dat")
}
remove-item を cmd /c del に置き換えても、UNC の代わりにローカル ディレクトリを使用するのと同じように、何も変更されません。