同じテーブルに、異なる順序でページロックを取得する2つの更新ステートメントがあります。これはデッドロックにつながります。
両方のステートメントに同じ順序でページロックを強制する方法を教えてください。
両方のステートメントに同じ順序でページロックを強制する方法を教えてください。
できません。代わりに、両方にTABLOCKXヒントを使用してテーブルロックを強制するか、または Application Lock を使用してセッションをシリアル化します。
SQLステートメントでページアクセスシーケンスを強制できます。あなたはmay同じ検索順序を持つ各クエリのプランを見つけて、プランガイドを適用できます。 IIRCこれは単なる提案であり、実行エンジンは実行時にそれを使用しない場合があります。
これらのページの行がロックされているため、ページにアクセスしてロックします。行が(カーソルなどで)タッチされる順序を強制できる場合は、this問題が解決されます。もちろん、今は他の問題があります。
おそらく、2つのクエリが同じ行を操作していません。 SQL Serverは行ロックをサポートしています。それに応じてテーブルとインデックスを定義する必要があります。