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

时间:2018-02-28 08:49:57

标签: sql-server batch-file cmd sqlcmd logfile

以下问题帮助我解决了执行位于文件中的多个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) 

2 个答案:

答案 0 :(得分:2)

您正在寻找命令重定向

根据你的例子 -

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

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

更多信息herehere

答案 1 :(得分:0)

如果您需要输出到一个公共文件,那么您应该使用@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