(エラーがスローされたときや開発中だけでなく)本番環境で実行されるロギング/監査コードを書いています。Coding Horrorのデッドロックとロギングの経験を読んだ後、私はアドバイスを求めるべきだと決めました。(「ログに記録しない」というJeffのソリューションは私には機能しません。これは、法的に義務付けられているセキュリティ監査です)
競合とデッドロックを最小限に抑えるための適切な分離レベルはありますか?挿入ステートメントまたはストアドプロシージャに追加できるクエリヒントはありますか?
私は、監査テーブルを除くすべてのトランザクションの整合性に深く関心を持っています。非常に多くのログが記録されるため、いくつかのエントリが失敗しても問題はありません。ロギングが他のトランザクションを停止した場合、それは悪いことです。
データベースまたはファイルにログを記録できますが、ファイルへのログ記録は、結果を何らかの方法で表示できる必要があるため、あまり魅力的ではありません。ただし、ファイルにログを記録すると、ログが他のコードに干渉しないことが(ほぼ)保証されます。