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
应该包含您要查找的内容。不过要小心,因为它可能包含比您预期更多的信息。
我是运行下面的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
应该包含您要查找的内容。不过要小心,因为它可能包含比您预期更多的信息。