Sql-Server
如何讓 SQLCMD 只輸出錯誤和警告?
在執行 SQL 腳本文件時,如何讓 SQLCMD 僅輸出它遇到的任何錯誤或警告?
我基本上不希望輸出基於資訊的消息。
預設情況下,SQLCMD將所有非錯誤消息和錯誤消息發送到stdout。因此,嘗試重定向輸出將無濟於事。
為了只獲取一種或另一種類型的消息(錯誤或非錯誤),您需要做的第一件事是通過將錯誤消息(嚴重級別 11 或更高級別)發送到stderr來告訴****SQLCMD將它們分開。為此,您可以使用命令行開關,指定該開關的選項(即)。此時,在執行 SQLCMD 和查看螢幕上顯示的任何類型的消息方面沒有明顯差異。
-r``0``-r0
下一部分是過濾掉髮送到stdout的正常消息。這可以通過將標準輸出消息重定向到某個地方來完成
>
,但是到哪裡呢?你可以這樣做> file.txt
,但我懷疑你想要一個你不想開始的消息文件。幸運的是,DOS 有一個NUL
關鍵字(不是typeo:它有一個L
,而不是兩個),就像/dev/null
在 Unix 中一樣。這意味著您可以使用以下內容將輸出重定向到無處:> NUL
.以下將執行
CD %TEMP% SQLCMD -E -Q "print 1;" -r0 > NUL
但以下顯示一條錯誤消息,因為這些消息沒有被重定向到
NUL
:CD %TEMP% SQLCMD -E -Q "print a;" -r0 > NUL
回報:
Msg 128, Level 15, State 1, Server DALI, Line 1 The name "a" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.
以下將起作用:
sqlcmd -U user -P pass -S Server -Q "sp_who" -r0 1> test.log
查詢的輸出將被放入日誌中,螢幕上不會列印任何內容。
有關sqlcmd 的 MSDN 文章的更多詳細資訊。