sqlcmd没有返回错误

时间:2016-02-02 23:50:35

标签: sql-server windows powershell sql-server-2012 powershell-v3.0

我通过power shell运行以下sqlcmd

$dump = sqlcmd -S $server -Q $sqlCommand -t $queryTimeout -b -h -1 -W

我尝试将输出写入屏幕

$message = "Error while executing sql {0}, Error details {1}" -f "$sqlCommand","$dump" 
Write-Warning $message

$dump为空

1 个答案:

答案 0 :(得分:1)

我不熟悉sqlcmd.exe但是根据您的期望描述,我认为sqlcmd正在向错误流中发送信息。这是一种看似奇怪但常见的做法,因此也就是出现。

这里的问题是变量$dump只会收集发送到输出流的信息。您可以做的是使用重定向器将错误流重定向到输出流。有关详细信息,请查看about_redirection

因此,使用以下内容将实现:

$dump = sqlcmd -S $server -Q $sqlCommand -t $queryTimeout -b -h -1 -W 2>&1

链接文档将2>&1描述为

  

将错误(2)和成功输出(1)发送到成功输出流。

现在$dump应该包含您要查找的内容。但请注意,因为它可能包含比您预期的更多信息。