如何获得SQLCMD只输出错误和警告(How to get SQLCMD to output err

2019-07-30 03:51发布

你怎么能得到SQLCMD,执行一个SQL脚本文件,只是输出它遇到的任何错误或警告的时候?

我基本上不想基于信息的消息输出。

Answer 1:

这是不可能的,以防止SQLCMD通过它传递的参数返回非错误输出消息。

不过,你所能做的就是重定向错误信息到STDERR ,然后将所有其他消息NUL

这是通过在完成-r参数。 从联机丛书 :

-R [0 | 1]封邮件到stderr

重定向错误消息输出到屏幕(错误)。 如果不指定参数,或者如果指定的有11或更高的严重级别0,唯一的错误信息被重定向。 如果指定1,包括打印所有错误消息输出重定向。 如果使用-o没有任何效果。 默认情况下,消息被发送到标准输出。

设置-r这依赖于你想显示,而是显示所有的错误信息输出,错误信息,一个示例命令是:

sqlcmd -Q "select 1 as a; select 1/0 as b" -E -r1 1> NUL


Answer 2:

正如一个除此之外,如果您要发送错误出文件,我发现这个https://www.simple-talk.com/sql/sql-tools/the-sqlcmd-workbench/

我都用。 如果省略设置OUT,那么你只能获得创建一个错误日志。 所以,你有这样的命令:

sqlcmd -x -E -S MyServer -i C:\MySQLBatchToRun.sql 

然后在MySQLBatchToRun.sql,这样的事情

USE MyDatabase
:Error C:\MyErrorLog.txt
:r C:\MySQLScript.sql
GO

在MySQLScript.sql你有实际的SQL运行。 这是一个有点令人费解,但工程。 我唯一的问题是,它似乎创建一个空的错误日志文件,即使没有错误。



Answer 3:

它看起来像被送到与-r1到标准错误,所以你可以用它们来记录您的输出单独像这样的打印语句:

sqlcmd -Q "print 'hello logfile';select 'Ted' as bro"  -r1 1> C:\output.txt 2> C:\logfile.txt

这也与-i输入文件的工作原理是:SQLCMD -i helloTed.sql -r1 1> C:\ output.txt的2> C:\ LOGFILE.TXT

helloTed.sql:

打印“你好日志文件”;
选择“特德”作为兄弟

也许你可以使用-Q和exec的插入包含打印存储的过程。



文章来源: How to get SQLCMD to output errors and warnings only