BCPコマンドを使用して、SQL Server DBテーブルのファイルを生成しています。 BCPコマンドは、データをファイルにダンプできない場合、テーブルごとに空のファイルを作成します。これは、書き込まれたクエリのエラー、または空の変数がBCPコマンドに渡されたことが原因である可能性があります。
これらのイベントをエラーとしてキャプチャし、エラーコードを返すようにする方法はありますか?
ストアドプロシージャからこれを実行しています。 SPでこれを処理する方法はありますか?
Powershellはあなたの友達です。 Powershellでcmdコマンドを使用する場合、$LASTEXITCODE
変数を使用して、実行したコマンドの結果を読み取ります。
以下のコードは、BCP
コマンドをInvoke-Expressionコマンドレットに渡し、その出力をキャプチャします。
$OutputPath = "C:\temp\Numbers-20151230.dat"
try
{
$Command = "bcp dbo.Numbers out $OutputPath -T -n -S Localhost\JamesA_Test -d UtilityDB"
$Output = Invoke-Expression -command $Command
if ($LASTEXITCODE)
{
throw $Output
}
}
catch
{
Write-Host "BCP command failed: $Output"
}
エラーの処理方法がわからないので、Write-Host
この例のエラーを表示します。エラーをイベントログ、ファイル、SQLのテーブルなどに記録できます。