Une recompilation infinie possible a été détectée pour SQLHANDLE

10

J'ai trouvé d'étranges messages d'erreur dans le journal des erreurs SQL:

Bocss: le même blocage a lieu toutes les heures - nécessite une enquête

De nombreuses recompilations sont également répertoriées dans le journal des erreurs pour d'autres SPID, comme indiqué dans les exemples suivants:

04/09/2015 14: 30: 10, spid64, Unknown, une recompilation infini possible a été détectée pour SQLHANDLE 0x0200000059631A288882589E0C54B76404CAE1B97E08D3680000000000000000000000000000000000000000 PlanHandle 0x0600040059631A2860A62B654100000001000000000000000000000000000000000000000000000000000000 décalage de départ 1038 offset de fin 2600. La dernière raison de recompilation était 2. 04/09/2015 14:30:10 , spid150, Inconnu, Une recompilation infinie possible a été détectée pour SQLHANDLE 0x02000000EF886F018C4E0B163812B8B20150FE8FC7E6A06A0000000000000000000000000000000000000000 PlanHandle 0x06000400EF886F01901A816E0600000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.Une recompilation infinie possible a été détectée pour SQLHANDLE 0x0200000057C4C632D9052275CFF2B683B80F29501EE91D730000000000000000000000000000000000000000 PlanHandle 0x0600040057C4C63200EAC2BE3000000001000000000000000000000000000000000000000000000000000000 début du décalage 1064 offset de fin 2652. La dernière raison de recompilation a été 2. 04/09/2015 14: 30: 09, spid163, Unknown, une recompilation infini possible a été détectée pour SQLHANDLE 0x02000000E7C7BF0E5D70DE55759C7842860272AD474D69AB0000000000000000000000000000000000000000 PlanHandle 0x06000400E7C7BF0EF0EB68A52C000000010000000000000000000000000000000000000000000000000000000000 décalage de départ 1028 fin de décalage 2580. La dernière raison de recompilation était 2.

Qu'est-ce qui aurait pu causer ça?

On dirait que je n'ai plus les plans en cache. entrez la description de l'image ici

en suivant les conseils de cet article http://www.sqlservercentral.com/Forums/Topic1479420-146-1.aspx

puis comme une mesure de sécurité a désactivé les catalogues de texte intégral, cela n'a fait aucune différence, alors j'ai annulé complètement les modifications (abandonné les nouveaux objets, etc.). Cela n'a également fait aucune différence, à la fin la seule chose qui semblait l'arrêter était un redémarrage des instances SQL, cela a immédiatement résolu le problème.

cela m'a aussi réglé, cependant, je dois encore trouver ce qui a causé ce gâchis au départ?

Marcello Miorelli
la source
2
Votre message d'erreur ne signifie pas que le plan n'est plus dans le cache. Je crois que vous avez copié de manière incorrecte le descripteur de plan et qu'il s'agit d'une valeur trop longue ou d'une valeur trop courte. Je peux exécuter un SELECTsur en dm_exec_sql_textutilisant la poignée qui est dans votre message d'erreur, sans obtenir d'erreur
Mark Sinkinson
+ 1 bien repéré
Marcello Miorelli

Réponses:

11

Selon le message de recompilation Infinite dans le journal d' erreurs sur le blog de l'équipe de programmation SQL et de développement d'API, ce message est déclenché lorsqu'une instruction dans un lot se recompile 100 fois de suite.

Ce message ne signifie pas nécessairement qu'il y a un problème; il existe pour aider à dépanner des déclarations qui pourraient légitimement être recompilées aussi souvent (par exemple, en raison de changements rapides dans les statistiques), ainsi que de véritables boucles de compilation infinies (ce qui serait rare à l'extrême).

Vous devez commencer par identifier l'instruction de déclenchement à partir des informations fournies et l'évaluer dans le contexte du code numérique donnant la raison des recompilations. Il existe un tableau de ces codes et de leur signification à plusieurs endroits dans Books Online, y compris sous SP: Recompile Event Class .

Des informations supplémentaires sont disponibles dans Planification de la mise en cache et de la recompilation dans SQL Server 2012 .

Tableau des valeurs

Paul White 9
la source