このエラーが処理されていることは承知しております。SQL Server:デッドロックの犠牲者。トランザクションを再開してください
サードパーティのアプリケーションが所有するデータベース内のいくつかのテーブルでSELECTに限定されたアカウントがあります。私たちが第三者に要求しなくても、奇妙なことを安全に照会できるというアイデアは、私たちのために変更を加える(あまり反応しません)。
これは、私がログで例外を気付いた今日(郵便タイトルを参照)まで、(表面上)正常に動作しています。
クエリがあったことを考える:
SELECT
DATEDIFF(ss, '01-01-1970 00:00:00', (SELECT MAX(CREATEDDATE)
FROM VISITS
WHERE CUSTID = 31))
そしてDBCC USEROPTIONS
は、なぜ何もして上記の競合がすべき、コミット分離レベルが読み取られた私に語ったこと?私はそれが時代遅れの価値を得ることを理解することができますが、なぜコミットのみの読み取りで競合?
とにかく、私の心配していることは、もう一方の側で起こっている可能性があることです。サードパーティのアプリが同様のエラーを経験しており、誰も気付いていないと(彼らは急いでいません)
誰もがもう一方の側について安心して(もう一度、私はSELECT
をやっているだけです)、この種のシナリオではベストプラクティスについて助言してもらえますか? SQLの並行性は、私が過去にあまり心配していなかったことではありません。
おかげ
ありがとうございました。私はSELECTだけで私は他のアプリの方法で取得していないと仮定安全ですか? – whoasked
いいえ、あなたは本当にそれを仮定することはできません。すべてのデッドロック(アプリケーションと選択項目の両方)が安全な側にあるように、SQL Serverを監視することができます。 – onupdatecascade
@oneupdatecascade Sql Serverのデッドロックを監視して、発生時にこれらをデバッグする方法を教えてください。すべてのポインタ?私はこれらのデッドロックを週に数回得る。 – mxmissile