sqlcmd 不返回错误

sqlcmd not returning error

我是运行下面的sqlcmd via power shell

$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 是空的

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

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

所以使用下面的方法就可以做到:

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

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

Sends errors (2) and success output (1) to the success output stream.

现在 $dump 应该包含您要查找的内容。不过要小心,因为它可能包含比您预期更多的信息。