Sintomas
Suponha que você use o Microsoft SQL Server 2016 e o 2017. Se você habilitar o xml_deadlock_report de eventos para coletar dados para deadlocks, muitos xml_deadlock_report eventos serão relatados para uma ocorrência única de deadlocks dentro da consulta.
Solução alternativa
Como solução alternativa 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:
CRIAR sessão de evento [Deadlock_Collection] no servidor
Adicionar SqlServer.error_reported de eventos (
ONDE ([error_number] = (1205)))
ADD TARGET package0. histograma (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 = NENHUM, TRACK_CAUSALITY = ON, STARTUP_STATE = OFF)
GO
Resolução
Esse problema foi corrigido nas seguintes atualizações cumulativas do SQL Server:
Atualização cumulativa 10 para SQL Server 2017
Atualização cumulativa 2 para SQL Server 2016 SP2
Observação: Com essa correção, nenhum evento xml_deadlock_report é relatado para deadlocks dentro da consulta quando o deadlock pode ser resolvido sem finalizar um thread.
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes do SQL Server:
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".
Referências
Saiba mais sobre a terminologiaque a Microsoft usa para descrever atualizações de software.