要在 sqlcmd
中执行SQL脚本时即便遇到错误也能继续执行后续的命令,并同时打印错误日志,可以使用 -b
参数。这个参数使得 sqlcmd
在遇到错误时不退出,而是继续执行下一个批次(batch)。不过,请注意,这并不会改变错误本身的发生,只是允许脚本中的其他命令有机会继续执行。
同时,为了捕捉并记录所有的错误信息,仍然可以使用命令行重定向的方法将错误流与标准输出合并到一个文件中:
bash
sqlcmd -S servername -d dbname -U username -P password -b -i input_script.sql > output.txt 2>&1
这里 -b
参数表示在遇到错误时继续执行下一个批次。同样地:
> output.txt
会将所有标准输出(包括成功执行的语句结果)重定向到output.txt
文件中。2>&1
表示将标准错误输出(即错误信息)也重定向到同一文件中,这样就可以在一个文件中查看到整个脚本执行过程中的所有信息,包括那些导致错误但仍继续执行的批次的错误信息。
请注意,尽管 -b
参数允许错误发生后继续执行,但在逻辑上相互依赖的多个语句之间,如果前一个语句失败导致后续语句无法正确执行,那么即使继续执行也可能产生不可预知的结果。因此,在生产环境中使用此选项时需谨慎考虑。