優先度の低いデータの挿入中にエラーが発生しても、トランザクションの実行を継続する方法を探しています。実際のネストされたトランザクションが解決策になるようですが、SQL Server 2005/2008 ではサポートされていません。別の解決策は、エラーが重大かどうかを判断するロジックを用意することですが、それも不可能のようです。
私のシナリオの詳細は次のとおりです。
データは ADO.NET/C# を使用してデータベースに定期的に挿入されます。データの一部は重要ですが、一部は問題なく欠落している可能性もあります。挿入が完了すると、データに対していくつかの計算が行われます。(バイタルと非バイタルの両方) このプロセス全体がトランザクション内にあるため、すべてが同期されます。
現在、トランザクション セーブ ポイントが使用され、非重要な挿入中に発生する例外に対して部分的なロールバックが行われます。ただし、これは、トランザクション全体を自動的にロールバックする「バッチ中止」エラーには機能しません。一部のエラーが重大であることは理解していますが、失敗したキャストなどは、SQL Server によってバッチ中止エラーと見なされます。(バッチ エラーに関する情報) これらのエラーが優先度の低いデータで発生した場合に、挿入全体が停止するのを防止しようとしています。
私が説明していることが不可能な場合は、データの整合性を達成するための代替方法を検討しますが、非重要な挿入の失敗は許可します.
ご協力いただきありがとうございます。