È stata rilevata una possibile ricompilazione infinita per SQLHANDLE


10

Ho trovato strani messaggi di errore nel registro errori sql:

Bocss: stesso deadlock che si verifica ogni ora - ha bisogno di essere investigato

Inoltre, nel registro errori sono elencati molti ricompilamenti per altri SPID come negli esempi seguenti:

2015/09/04 14: 30: 10, spid64, Unknown, una possibile ricompilazione infinita stato rilevato per SQLHANDLE 0x0200000059631A288882589E0C54B76404CAE1B97E08D3680000000000000000000000000000000000000000 PlanHandle 0x0600040059631A2860A62B654100000001000000000000000000000000000000000000000000000000000000 offset iniziale 1038 Offset finale 2600. L'ultima ragione ricompilazione era 2. 2015/09/04 14:30:10 , spid150, Unknown, una possibile ricompilazione infinita stato rilevato per SQLHANDLE 0x02000000EF886F018C4E0B163812B8B20150FE8FC7E6A06A0000000000000000000000000000000000000000 PlanHandle 0x06000400EF886F01901A816E0600000001000000000000000000000000000000000000000000000000000000 offset iniziale 998 Offset finale 2520. L'ultima ragione ricompilazione era 2. 2015/09/04 14: 30: 09, spid67, Unknown,Una possibile ricompilazione infinita stato rilevato per SQLHANDLE 0x0200000057C4C632D9052275CFF2B683B80F29501EE91D730000000000000000000000000000000000000000 PlanHandle 0x0600040057C4C63200EAC2BE3000000001000000000000000000000000000000000000000000000000000000 offset iniziale 1064 Offset finale 2652. L'ultima ragione ricompilazione stato 2. 2015/09/04 14: 30: 09, spid163, Unknown, una possibile ricompilazione infinita stato rilevato per SQLHANDLE 0x02000000E7C7BF0E5D70DE55759C7842860272AD474D69AB0000000000000000000000000000000000000000 PlanHandle 0x06000400E7C7BF0EF0EB68A52C00000001000000000000000000000000000000000000000000000000000000000000 offset iniziale 1028 offset finale 2580. L'ultimo motivo della ricompilazione è stato 2.

Cosa potrebbe aver causato questo?

Sembra che non abbia più i piani in cache. inserisci qui la descrizione dell'immagine

seguendo i consigli di questo post http://www.sqlservercentral.com/Forums/Topic1479420-146-1.aspx

quindi come misura di sicurezza disabilitato i cataloghi full-text, ciò non ha fatto alcuna differenza, quindi ho eseguito il rollback completo delle modifiche (eliminando i nuovi oggetti ecc.). Anche questo non ha fatto alcuna differenza, alla fine l'unica cosa che sembrava fermarlo era un riavvio delle istanze SQL, questo ha immediatamente risolto il problema.

anche questo mi ha risolto, ma devo ancora scoprire cosa ha causato questo disastro in primo luogo?


2
Il tuo messaggio di errore non significa che il piano non è più nella cache. Credo che tu abbia copiato erroneamente l'handle del piano ed è un valore troppo lungo o uno troppo corto. Posso eseguire un SELECTon dm_exec_sql_textutilizzando l'handle che si trova nel tuo messaggio di errore, senza ottenere un errore
Mark Sinkinson

+ 1 ben notato
Marcello Miorelli

Risposte:


11

Secondo il messaggio di ricompilazione Infinite nel log degli errori nel Blog del team di sviluppo API e programmabilità SQL, questo messaggio viene attivato quando un'istruzione in un batch viene ricompilata 100 volte di seguito.

Questo messaggio non significa necessariamente che c'è un problema; esiste per aiutare a risolvere le affermazioni che potrebbero legittimamente essere ricompilate spesso (ad esempio, a causa di rapidi cambiamenti nelle statistiche), così come cicli di compilazione infiniti reali (che sarebbero rari all'estremo).

È necessario iniziare identificando la dichiarazione di attivazione dalle informazioni fornite e valutarla nel contesto del codice numerico che fornisce il motivo delle ricompilazioni. C'è una tabella di questi codici e dei loro significati in diversi punti della documentazione online, incluso nella classe SP: Ricompila evento .

Sono disponibili ulteriori informazioni in Pianificazione della memorizzazione nella cache e ricompilazione in SQL Server 2012 .

Tabella dei valori

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.