web-dev-qa-db-ja.com

SQLHANDLEの無限再コンパイルの可能性が検出されました

私はSQLエラーログで奇妙なエラーメッセージを見つけてきました:

Bocss:1時間ごとに同じデッドロックが発生–調査が必要

また、次の例のように、他のSPIDのエラーログに多くの再コンパイルがリストされます。

2015年9月4日14:30:10、spid64、Unknown、SQLHANDLE 0x0200000059631A288882589E0C54B76404CAE1B97E08D3680000000000000000000000000000000000000000 PlanHandle 0x0600040059631A2860A62B654100000001000000000000000000000000000000000000000000000000000000開始オフセット600200000010000000000000000000000000000000000000000000000000000000開始オフセット600200000010000000000000000000000000000000000000000000000000000000開始オフセット600400000009000000 、spid150、Unknown、可能な無限再コンパイルがSQLHANDLE 0x02000000EF886F018C4E0B163812B8B20150FE8FC7E6A06A0000000000000000000000000000000000000000 PlanHandle 0x06000400EF886F01901A816E0600000001000000000000000000000000000000000000000000000000000000開始オフセット2.9終了再コンパイルされた理由:2.9終了オフセット252015 09:終了オフセット252015終了:09再コンパイルされました。 SQLHANDLE 0x0200000057C4C632D9052275CFF2B683B80F29501EE91D730000000000000000000000000000000000000000 PlanHandle 0x0600040057C4C63200EAC2BE30000000010000000000000000000000000000000000000000000000000000で検出されました00開始オフセット1064終了オフセット2652。最後の再コンパイルの理由は2でした。2015年9月4日14:30:09、spid163、Unknown、SQLHANDLE 0x02000000E7C7BF0E5D70DE55759C7842860272AD474D69AB0000000000000000000000000000000000000000 Plan000000の無限再コンパイルの可能性が検出されました。再コンパイルの理由は2でした。

何が原因でしょうか?

キャッシュにプランがもうないようです。 enter image description here

この投稿のアドバイスに従う http://www.sqlservercentral.com/Forums/Topic1479420-146-1.aspx

次に、安全対策としてフルテキストカタログを無効にしたため、これには違いがなかったため、変更を完全にロールバックしました(新しいオブジェクトをドロップしたなど)。これでも違いはありませんでしたが、SQLインスタンスを再起動するだけで停止するように見えたため、問題はすぐに解決しました。

これも私を整理しました、しかし、私はまだ最初にこの混乱を引き起こした原因を見つける必要がありますか?

10

SQL Programmability&API Development Team Blogの errorlogの無限再コンパイルメッセージ によると、このメッセージは、バッチ内のステートメントが100回続けて再コンパイルされたときにトリガーされます。

このメッセージは必ずしも問題があることを意味するものではありません。これは、合法的に頻繁に再コンパイルされている可能性のあるステートメント(たとえば、統計の急激な変化が原因)と、実際の無限コンパイルループ(極端な場合はまれです)のトラブルシューティングに役立ちます。

最初に、提供された情報からトリガーステートメントを特定し、再コンパイルの理由を示す数値コードのコンテキストでそれを評価する必要があります。 SP:Recompile Event Class を含む、Books Onlineのいくつかの場所にこれらのコードとその意味の表があります。

SQL Server 2012のキャッシュと再コンパイルを計画する で利用可能な詳細情報があります。

Table of values

10
Paul White 9