代码之家  ›  专栏  ›  技术社区  ›  Newbie

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

  •  7
  • Newbie  · 技术社区  · 17 年前

    关于如何实现这一点有什么想法吗?

    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 回复  |  直到 17 年前
        1
  •  9
  •   Remus Rusanu    17 年前

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

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

        2
  •  8
  •   Jake    7 年前

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

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

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

    你可以提高到25级,但是如果你在17级和25级之间出现错误,你就不太可能取得很大进展,因为这些错误往往是由服务器上的软件或硬件错误引起的,而不是你输入的脚本中的错误。