关于如何实现这一目标的任何想法?
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;
...
答案 0 :(得分:9)
批处理中断错误的行为是SQL Server(即后端)选项,并受错误严重性的控制。无法更改服务器行为,中断批处理的错误将始终中断批处理,期间。
文件继续的行为(错误后运行下一个GO分隔的批处理)是sqlcmd选项,由-b开关控制。默认为ON(意味着sqlcmd继续下一批)。
答案 1 :(得分:8)
在命令行中使用-V
标志。如果设置足够大的值(例如17),即使是相当严重的错误也不会停止脚本。
e.g。 sqlcmd ... -V 17 -i MyFile.sql
我会假设您在执行此操作时知道自己在做什么,并且仍在监视错误消息。
你可以走得更高,达到25级,但是如果你在17到25级之间遇到错误,那么你不太可能取得很大的进步,因为它们往往是由软件或硬件错误造成的在服务器上,而不是您输入的脚本中的错误。