web-dev-qa-db-ja.com

BCPコマンドがデータをファイルにダンプできない場合にエラーを発生させる

BCPコマンドを使用して、SQL Server DBテーブルのファイルを生成しています。 BCPコマンドは、データをファイルにダンプできない場合、テーブルごとに空のファイルを作成します。これは、書き込まれたクエリのエラー、または空の変数がBCPコマンドに渡されたことが原因である可能性があります。

これらのイベントをエラーとしてキャプチャし、エラーコードを返すようにする方法はありますか?

ストアドプロシージャからこれを実行しています。 SPでこれを処理する方法はありますか?

7
MySQL DBA

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のテーブルなどに記録できます。

8
James Anderson