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

SQLCMD command, How to save output into log file

以下问题帮助我解决了执行位于文件中的多个 SQL 脚本的问题。 运行 目录中的所有 SQL 个文件 但是,我不知道如何将输出重定向到单独的日志文件中。有人建议使用以下脚本,但由于我不理解它,所以它不起作用,我也找不到错误。

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

您正在寻找命令重定向

按照你的例子 -

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

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

更多信息here and here

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

如果您需要将每个输入 sql 文件的输出输出到 单独的日志文件中 那么你可以使用 sqlcmd 命令的 -o 参数。您的 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