Sintomas
Suponha que utiliza o Microsoft SQL Server 2016 e 2017. Se ativar a xml_deadlock_report de eventos para recolher dados para impasses, são comunicados muitos xml_deadlock_report eventos para uma única ocorrência de impasse dentro da consulta.
Solução
Como solução para esse problema, você pode coletar o error_reported XEvent usando um filtro error_number = 1205 em vez de xml_deadlock_report, como visto no exemplo a seguir:
Nota
- CREATE EVENT SESSION [Deadlock_Collection] ON SERVER
- ADICIONAR EVENTO sqlserver.error_reported(
- WHERE ([error_number]=(1205)))
- ADD TARGET package0.histogram(SET filtering_event_name=N'sqlserver.lock_acquired',source=N'sqlserver.query_hash')
- COM (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SEGUNDOS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=ON,STARTUP_STATE=OFF)
- GO
Resolução
Este problema foi corrigido nas seguintes atualizações cumulativas para SQL Server:
Atualização cumulativa 10 para SQL Server 2017
Atualização cumulativa 2 para SQL Server 2016 SP2
Observação: Com esta correção, não são comunicados xml_deadlock_report eventos para impasse intra-consulta quando o impasse pode ser resolvido sem matar um tópico.
Acerca das atualizações cumulativas para SQL Server:
Cada nova atualização cumulativa para SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Consulte as atualizações cumulativas mais recentes para SQL Server:
Atualização cumulativa mais recente para o SQL Server 2017
Atualização cumulativa mais recente para o SQL Server 2016
Estado
A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados na secção "Aplica-se a".
Referências
Saiba mais sobre a terminologia que a Microsoft utiliza para descrever as atualizações de software.