2011-09-15 38 views
0

DataAdapterにはContinueUpdateOnErrorプロパティがあり、 をTrueに設定すると、エラーが発生した場合でもDataAdapter.Update コマンドの処理が続行されます。これは理想的なので、挿入することができないデータの各行で のエラーをキャッチすることができます。ただし、 バッチ処理をOFFに設定した場合にのみ、これが正しく動作します (DataAdapter.UpdateBatchSize = 1)。SqlDataAdapter UpdateBatchSize行のエラー

DataAdapter.UpdateBatchSizeは0又は がオンバッチ処理をオンになり、別の番号に設定され、エラーが バッチのレコード内で発生された場合、全体のバッチ更新の失敗。明らかに、これは 私が何をしたいのではないですか。

理想的には、2つのシナリオを組み合わせてみたいと思います。私は、 バッチ処理を使用することができるようにしたいので、行の挿入時に データベースへのラウンドトリップが少なくて済みますが、同時に私は になることができます。 (バッチがオンになっているときに の理由で動作しない、ContinueUpdateOnError が 'True'に設定されている)私には、それは一方的な方法でなければならないか、または 別のものでなければならないように見えます。私はそれぞれの行を個々に挿入して、各行のエラーを捕捉する機能を持って、各挿入のために データベースを個別に挿入するか、 バッチをサーバーに送信しようとしましたが、バッチ内の行が失敗した場合は バッチが失敗します。

どのような考えですか? MSDNのページ「DataAdapter.ContinueUpdateOnErrorプロパティ」から

答えて

0

ContinueUpdateOnErrorがtrueに設定されている場合は、エラーが行の更新中に発生したときに、例外がスローされません。行の更新はスキップされ、エラー情報はエラーのある行のRowErrorプロパティに格納されます。 DataAdapterは引き続き次の行を更新します。 「DataAdapters(ADO.NET)を使用してバッチ操作の実行」を

そして、MSDNのページから:

バッチ実行は、個々のステートメントの実行と同じ効果があります。ステートメントは、ステートメントがバッチに追加された順に実行されます。エラーは、バッチモードが無効の場合と同じようにバッチモードで処理されます。

このように、何か間違っているか、Microsoftのドキュメントは信頼できません。

関連する問題