-3

LCK_M_SCH_S、スキーマ安定性ロックにより、ストアド プロシージャが永久に待機していました。回避または回避する方法はありますか?

4

2 に答える 2

2

LCK_M_SCH_S はスキーマ安定ロックです。このロックは、クエリがコンパイルおよび実行されるときに使用されます。このタイプのロックによる長時間のブロックは、1 つ以上のデータベースで実行時間の長いクエリがあることを示しています。これらの長時間実行されるクエリをバッチ処理する以外に、このタイプのロックを回避する簡単な方法はありません。

于 2015-03-28T18:50:56.597 に答える
1

申し訳ありませんが、私の質問は明確ではありませんでしたが、 Jaco de Groot の回答に触発された解決策があり ます。このロックは、masterdb の別のストアド プロシージャが原因でした。 sp_helpconstraintは、現在のデータベース内のテーブルの制約を見つけるために使用されます。これを Proc で使用して、テーブル/ビューの制約の詳細を取得しました。これをViewに適用していたため、LCK_M_SCH_S が発生しました。この Proc を適用する前に、オブジェクト (タイプが 'U' かどうか) をテストしました。問題なく動作します。

于 2015-04-13T06:38:14.537 に答える