你怎么能得到SQLCMD,执行一个SQL脚本文件,只是输出它遇到的任何错误或警告的时候?
我基本上不想基于信息的消息输出。
你怎么能得到SQLCMD,执行一个SQL脚本文件,只是输出它遇到的任何错误或警告的时候?
我基本上不想基于信息的消息输出。
这是不可能的,以防止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
正如一个除此之外,如果您要发送错误出文件,我发现这个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运行。 这是一个有点令人费解,但工程。 我唯一的问题是,它似乎创建一个空的错误日志文件,即使没有错误。
它看起来像被送到与-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的插入包含打印存储的过程。