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

エラー時のバッチ中断の動作はSQLServer(つまり、バックエンド)オプションであり、エラーの重大度によって管理されます。サーバーの動作を変更する方法はありません。バッチを中断するエラーは、常にバッチの期間を中断します。

ファイル継続の動作(エラー後に次のGO区切りバッチを実行する)はsqlcmdオプションであり、-bスイッチによって制御されます。デフォルトではオンです(sqlcmdが次のバッチを続行することを意味します)。

于 2009-07-23T20:36:29.240 に答える