使用 SQLCMD 运行多个 .sql 文件

Jon*_*ton 2 sql-server-2008-r2 sqlcmd error-handling

我正在尝试将一个批处理文件放在一起以运行大量 .sql 文件,而无需单独执行此操作。

到目前为止,我有:

@echo off
echo "Enter Server"
set /p SERVER=

echo "Enter Database"
set /p DATABASE=

del *.log

for /r %%i in (*.sql) do sqlcmd -E -S %SERVER% -d %DATABASE% -i"%%i" -m0 -o"%%i.log" -w500 

pause
Run Code Online (Sandbox Code Playgroud)

就目前而言,这有效。

然而,我真正想做的是将任何错误路由到一个单独的 .err 文件,以便一目了然地清楚哪些(100+)个文件失败。

我看到了:Error参数,但我不确定如何在此处应用它。

有没有简单的方法来实现这一目标?

Sql*_*CID 6

for /r %%i in (*.sql) do sqlcmd -E -S %SERVER% -d %DATABASE% -i"%%i" -m0 -w500  -b -r  >%%i.log  2>%%i.err
Run Code Online (Sandbox Code Playgroud)

不完美,因为它会在没有错误时创建一个空的错误输出文件,但大于 0 字节的 .err 文件将包含错误。

for %%a in (*.err) do if %%~za==0 del "%%a"
Run Code Online (Sandbox Code Playgroud)

..如果这是一个问题...