これを達成する方法についてのアイデアはありますか?
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 の間でエラーが発生した場合、サーバー上のソフトウェアまたはハードウェアのエラーが原因である傾向があるため、あまり進歩できない可能性があります。 、入力しているスクリプトのエラーではなく。
エラー時のバッチ中断の動作はSQLServer(つまり、バックエンド)オプションであり、エラーの重大度によって管理されます。サーバーの動作を変更する方法はありません。バッチを中断するエラーは、常にバッチの期間を中断します。
ファイル継続の動作(エラー後に次のGO区切りバッチを実行する)はsqlcmdオプションであり、-b
スイッチによって制御されます。デフォルトではオンです(sqlcmdが次のバッチを続行することを意味します)。