SQLCMD command, How to save output into log file

血红的双手。 提交于 2019-12-13 16:30:50

问题


The following question has helped me solving the problem of executing multiple SQL Scripts located in file. Run all SQL files in a directory However, I did not get how to redirect the output into a separate log file. Someone suggested the following script but since I don't understand it, it did not work and I can't find out the error.

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

回答1:


If you need the output into one common file then you should use the @Abhishek 's answer.

If you need the output into a separate log file for an each input sql file then you can use -o parameter of sqlcmd command. Your bat file could look like this:

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

In this case for

1.sql

2.sql

you will get:

1.sql.log

2.sql.log




回答2:


You are seeking Command Redirection.

As per your example -

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

once the execution of the sql script is done the output will be redirected to and appends the command output to the end of file (here sql.log) without deleting the information that is already in the file (>>) and redirects STDERR (2) into STDOUT handle(1) - 2>&1

More information here and here.



来源:https://stackoverflow.com/questions/49025374/sqlcmd-command-how-to-save-output-into-log-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!