Uma possível recompilação infinita foi detectada para SQLHANDLE


10

Tenho encontrado estranhas mensagens de erro no log de erros do sql:

Bocss: o mesmo impasse ocorre a cada hora - é preciso investigar

Além disso, muitas recompilações estão listadas no log de erros de outros SPIDs, conforme os seguintes exemplos:

2015/09/04 14: 30: 10, spid64, Desconhecido Uma possível recompilação infinito foi detectado por SQLHANDLE 0x0200000059631A288882589E0C54B76404CAE1B97E08D3680000000000000000000000000000000000000000 PlanHandle 0x0600040059631A2860A62B654100000001000000000000000000000000000000000000000000000000000000 deslocamento inicial 1038 terminando deslocamento 2600. A última razão recompilação era 2. 2015/09/04 14:30:10 , spid150, Desconhecido Uma possível recompilação infinito foi detectado por SQLHANDLE 0x02000000EF886F018C4E0B163812B8B20150FE8FC7E6A06A0000000000000000000000000000000000000000 PlanHandle 0x06000400EF886F01901A816E0600000001000000000000000000000000000000000000000000000000000000 deslocamento inicial 998 terminando deslocamento 2520. A última razão recompilação era 2. 2015/09/04 14: 30: 09, spid67, DesconhecidoUma possível recompilação infinito foi detectado por SQLHANDLE 0x0200000057C4C632D9052275CFF2B683B80F29501EE91D730000000000000000000000000000000000000000 PlanHandle 0x0600040057C4C63200EAC2BE3000000001000000000000000000000000000000000000000000000000000000 deslocamento inicial 1064 terminando deslocamento 2652. A última razão recompilação foi 2. 2015/09/04 14: 30: 09, spid163, Desconhecido Uma possível recompilação infinito foi detectado por SQLHANDLE 0x02000000E7C7BF0E5D70DE55759C7842860272AD474D69AB0000000000000000000000000000000000000000 PlanHandle 0x06000400E7C7BF0EF0EB68A52C00000001000000000000000000000000000000000000000000000000000000 deslocamento inicial 1028 deslocamento final 2580. O último motivo de recompilação foi 2.

o que poderia ter causado isso?

Parece que não tenho mais planos em cache. insira a descrição da imagem aqui

seguindo os conselhos deste post http://www.sqlservercentral.com/Forums/Topic1479420-146-1.aspx

então, como uma medida de segurança desativou os catálogos de texto completo, isso não fez diferença, então revirei totalmente as alterações (descartamos os novos objetos etc.). Isso também não fez diferença; no final, a única coisa que pareceu pará-lo foi o reinício das instâncias SQL; isso resolveu o problema imediatamente.

isso me resolveu também, no entanto, ainda estou para descobrir o que causou essa bagunça em primeiro lugar?


2
Sua mensagem de erro não significa que o plano não está mais no cache. Acredito que você copiou incorretamente o identificador do plano e é um valor muito longo ou muito curto. Posso executar um SELECTno dm_exec_sql_textutilizando a alça que está na sua mensagem de erro, sem obter um erro
Mark Sinkinson

+ 1 bem localizado
Marcello Miorelli

Respostas:


11

De acordo com a mensagem de recompilação infinita no log de erros no Blog da equipe de desenvolvimento de API e programação SQL, essa mensagem é acionada quando uma instrução em um lote é recompilada 100 vezes seguidas.

Esta mensagem não significa necessariamente que há um problema; ele existe para ajudar a solucionar problemas de instruções que podem legitimamente ser recompiladas com frequência (por exemplo, devido a rápidas alterações nas estatísticas), bem como loops de compilação infinitos reais (o que seria raro ao extremo).

Você deve começar identificando a instrução acionadora a partir das informações fornecidas e avaliá-la no contexto do código numérico, indicando o motivo das recompilações. Há uma tabela desses códigos e seus significados em vários lugares nos Manuais Online, inclusive na SP: Recompile Event Class .

Há mais informações disponíveis em Planejar cache e recompilação no SQL Server 2012 .

Tabela de valores

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.