Eu tive duas instâncias na última semana em que um DROP
comando para uma sessão de Eventos Estendidos levou mais de um dia para ser concluído, esperando com a espera: PREEMPTIVE_XE_CALLBACKEXECUTE
.
Alguém pode explicar o que significa esse tipo de espera?
Mais informações básicas:
Na primeira instância, executei um comando T-SQL para encerrar a sessão e ela foi concluída um dia depois. Usando sp_whoisactive
, vi que a query estava esperando PREEMPTIVE_XE_CALLBACKEXECUTE
.
Durante esse tempo, as consultas do Object Explorer para coletar metadados estavam sendo bloqueadas e recebendo bloqueios de tempo limite, mas não houve outras reclamações (ou assim pensei na época).
Tentei cancelar outra sessão na sexta-feira e ocorreu o mesmo comportamento, exceto que não desapareceu após um dia como no primeiro evento. Em vez disso, descobri esta manhã que o aplicativo cliente não pôde se conectar. Estava sendo bloqueado pela DROP EVENT SESSION
consulta.
Uma reinicialização do serviço SQL limpou a consulta de bloqueio.
Não consigo encontrar nada que ajude a diagnosticar o que é esse tipo de espera ... e por que minhas sessões de evento não caem como deveriam. Você pode ajudar?
Informações do servidor: SQL 2008 R2 Enterprise com SP2
Acredito que esse problema foi corrigido na atualização cumulativa nº 1 do SQL Server 2008 R2 SP2 (10.50.4260):
KB nº 2511963 - CORREÇÃO: a consulta para de responder no SQL Server 2008 ou no SQL Server 2008 R2 se a consulta alterar ou interromper uma sessão de eventos estendidos
Eles não mencionam seu tipo de espera específico, mas já vi outras pessoas que o fizeram e afirmaram que essa correção resolveu o problema. Portanto, se você estiver literalmente no SP2 sem CU (10.50.4000), considere pelo menos esse CU ou um posterior ( o CU mais recente para 2008 R2 SP2 é o CU7 (10.50.4286)).