SQLエージェントジョブをSQL Server 2008 R2インスタンスから2016インスタンスに移動しました。このジョブはPowerShellスクリプトを呼び出し、次にそれはbcp.exeを呼び出しました。ジョブを移動した後、私はこのエラーを受け取ります:
コピー方向は、「in」、「out」、または「format」のいずれかでなければなりません。
コマンドは変更されず、ジョブの場所とインスタンスのバージョンのみが変更されました。
bcp "SELECT * FROM [dbo].[Table]" queryout "\\filerepository\ftp\text_file.txt" -T -c -t"|" -S"ServerName" -d"MyDB"
また、2012 bcp.exeを使用してこれをローカルで実行し、同じエラーを受け取りました。 bcpユーティリティの本のオンライン記事を比較すると、このコマンドの構文に影響を与える変更はありません。
助言をいただければ幸いです。
更新:PowerShellスクリプト
$ErrorActionPreference = "stop"
$serverInstance = "Server"
$databaseName = "DB"
# construct query
$query = @"
SELECT *
FROM [dbo].[Table]
"@
$query = $query -replace "`n|`r|`t"," "
# output results
$extractPath = "\\filerepository\ftp\"
$fileName = "CTBRI_$(Get-Date -Format "yyyy-MM-dd")_text_file.txt"
$path = Join-Path $extractPath $fileName;
$cmd = "`"$query`" queryout `"$path`" -T -c -t`"|`" -S`"$serverInstance`" -d`"$databaseName`""
bcp $cmd
if($LASTEXITCODE -ne 0)
{
throw "bcp did not exit with a success code of 0. Hopefully there are more detailed messages above."
}
SQL Server 2008R2、2012、2016をホストするサーバー/ VM上のPowershellの同じバージョン?
クエリを囲む二重引用符を削除する解析エラーは、このエラーになります。
ロニー・ニーダーシュタット