SQLCMD命令,如何将输出保存到日志文件中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLCMD命令,如何将输出保存到日志文件中相关的知识,希望对你有一定的参考价值。

以下问题帮助我解决了执行位于文件中的多个SQL脚本的问题。 Run all SQL files in a directory 但是,我没有得到如何将输出重定向到单独的日志文件。有人建议使用以下脚本,但由于我不理解它,它不起作用,我无法找出错误。

for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f" >> sql.log 2>&1) 
答案

如果您需要输出到一个公共文件,那么您应该使用@Abhishek的答案。

如果您需要输出到每个输入sql文件的单独日志文件中,那么您可以使用-o命令的sqlcmd参数。您的bat文件可能如下所示:

for %%G in (*.sql) do sqlcmd /S <servername> /d <dbname> -E -i"%%G" -o C:logs\%%G.log
pause

在这种情况下

1.SQL

2.SQL

你会得到:

1.sql.log

2.sql.log

另一答案

您正在寻求命令重定向。

根据你的例子 -

for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f" >> sql.log 2>&1

一旦完成sql脚本的执行,输出将被重定向到并将命令输出附加到文件末尾(此处为sql.log),而不删除文件中已有的信息(>>)并重定向STDERR(2) )进入STDOUT手柄(1) - 2>&1

更多信息herehere

以上是关于SQLCMD命令,如何将输出保存到日志文件中的主要内容,如果未能解决你的问题,请参考以下文章

Linux下Shell命令的输出信息同时显示在屏幕和保存到日志文件中

命令行下 telnet 结果如何输出

在cmd中使用“>”保存输出信息到日志时怎么实现将日志文件名以该机器名命名?

linux sed 之 查看指定时间段的日志

如何制作 Makefile 以将命令及其输出记录到文件中?

Linux命令之保存命令结果到文件并且输出到屏幕tee