我们如何告诉sqlcmd在下一批时继续"出错"?

New*_*bie 7 sql sql-server sqlcmd

有关如何实现这一目标的任何想法?

USE [db_name]
BEGIN TRANSACTION
...TONS OF INSERTS
COMMIT;
RAISERROR (..) WITH NOWAIT;  //If error continue with next batch

BEGIN TRANSACTION
...TONS OF INSERTS
COMMIT;
RAISERROR (..) WITH NOWAIT;

...
Run Code Online (Sandbox Code Playgroud)

Rem*_*anu 10

批处理中断错误的行为是SQL Server(即后端)选项,并由错误严重性控制.无法更改服务器行为,中断批处理的错误将始终中断批处理,期间.

文件继续的行为(错误后运行下一个GO分隔的批处理)是sqlcmd选项,由-b开关控制.默认情况下为ON(表示sqlcmd继续下一批).


小智 8

使用-V命令行上的标志.如果设置足够大的值(例如17),即使是相当严重的错误也不会停止脚本.

例如 sqlcmd ... -V 17 -i MyFile.sql

我会假设您在执行此操作时知道自己在做什么,并且仍在监视错误消息.

你可以走得更高,达到25级,但是如果你在17到25级之间遇到错误,那么你不太可能取得很大进展,因为它们往往是由服务器上的软件或硬件错误引起的而不是您输入的脚本中的错误.