8

关于如何做到这一点的任何想法?

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;

...
4

2 回答 2

12

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

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

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

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

于 2012-11-08T17:12:58.410 回答
10

出错时批处理中断的行为是 SQL Server(即后端)选项,受错误严重性控制。没有办法改变服务器的行为,中断批处理的错误总是会中断批处理,期间。

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

于 2009-07-23T20:36:29.240 回答