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

时间:2009-07-23 20:19:04

标签: 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;

...

2 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:8)

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

e.g。 sqlcmd ... -V 17 -i MyFile.sql

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

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