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