Sql server SQLCMD命令,如何将输出保存到日志文件
下面的问题帮助我解决了执行文件中多个SQL脚本的问题。 但是,我不知道如何将输出重定向到单独的日志文件中。有人建议使用下面的脚本,但由于我不理解它,所以它不起作用,我无法找出错误Sql server SQLCMD命令,如何将输出保存到日志文件,sql-server,batch-file,cmd,sqlcmd,logfile,Sql Server,Batch File,Cmd,Sqlcmd,Logfile,下面的问题帮助我解决了执行文件中多个SQL脚本的问题。 但是,我不知道如何将输出重定向到单独的日志文件中。有人建议使用下面的脚本,但由于我不理解它,所以它不起作用,我无法找出错误 for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f" >> sql.log 2>&1) 用于(*.sql)中的%f执行sqlcmd/S/d/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)中的%f执行sqlcmd/S/d/E/i“%f”>>sql.log 2>&1)
您正在寻求命令重定向
根据你的例子——
对于(*.sql)中的%f执行sqlcmd/S/d/E/i“%f”>>sql.log 2>&1
sql脚本执行完成后,输出将被重定向到文件末尾(此处为sql.log),并将命令输出附加到文件末尾,而不删除文件中已有的信息,并将STDERR(2)重定向到STDOUT句柄(1)-2>&1
更多信息和信息 如果需要输出到一个公共文件中,那么应该使用@Abhishek的答案
如果需要将输出输入到每个输入sql文件的单独日志文件中 然后可以使用
sqlcmd
命令的-o
参数。您的bat
文件可能如下所示:
for %%G in (*.sql) do sqlcmd /S <servername> /d <dbname> -E -i"%%G" -o C:\logs\%%G.log
pause
对于(*.sql)中的%%G执行sqlcmd/S/d-E-i“%%G”-o C:\logs\%%G.log
暂停
在这种情况下
1.sql
2.sql
您将获得:
1.sql.log
2.sql.log
我一定错过了什么,因为它对我不起作用。我完全按照说明做了,但没有在我的目录中保存日志。您可以通过以下方式获得相同的结果:
对于(*.sql)do中的%%G(sqlcmd/S/d-E-I“%%G”>C:\logs\%%~nG.log)
在这种情况下,对于file1.sql
和file2.sql
您将获得file1.log
和file2.log