ウェブアプリケーション。C#、SQL 2k8
リストでは、実際の動的 SQL が実行され、目的のレコードが返される前に、多くの処理が行われます。
最近、アプリ全体 (デッドロックの問題) にトランザクションのコミット、ロールバックと再試行 X 回、全体で 9 ヤードのコードを追加しました。
それは大きなプラスです。本当に必要でした。
しかし
リストで発生する可能性のある問題をデバッグするために、動的 SQL 文字列をログ テーブルに保存していました (過去数週間の古いレコードは保存されません)。
問題は、リストがクラッシュした場合、現在ログがないことです。ロールバックのせいで...
これまでの私の最善のアイデアは、リストを 2 回呼び出すことでした。
"check" - モード、動的 SQL を作成し、LOG tbl に保存しますが、EXEC は実行しません
"list" - モードは次のいずれかになります。
2a. 動的 SQL を再計算する
また
2b. 「チェック - モード」で作成された動的 SQL を再利用します。
リストストアドプロシージャの最も高価な部分は動的SQLの実際の実行であるため、2aまたは2bのいずれにも大きなパフォーマンスの問題はありません。「チェック」モードは、いくつかの基本的な文字列連結です。
デッドロック再試行部分は 2 番目の db 呼び出しのみを実行しますが、これも良いことです!
まだ。私はこの考えで最も幸せな人ではありません。これを達成するためのより良い方法があるかどうか疑問に思います。