Symptomy
Załóżmy, że korzystasz z programu Microsoft SQL Server 2016 i 2017. Jeśli włączysz xml_deadlock_report zdarzeń w celu zbierania danych dla zakleszczenia, wiele zdarzeń xml_deadlock_report jest zgłaszanych dla jednego pojedynczego wystąpienia zakleszczenia w zapytaniu.
Obejście
W celu obejścia tego problemu można zebrać error_reported systemu XEvent za pomocą filtru ERROR_NUMBER = 1205 zamiast xml_deadlock_report, jak pokazano w poniższym przykładzie:
Tworzenie sesji zdarzeń [Deadlock_Collection] na serwerze
Dodaj SqlServer.error_reported zdarzeń (
WHERE ([error_number] = (1205)))
Dodaj docelową package0. histogram (SET filtering_event_name = N ' sqlserver.lock_acquired ', source = N ' sqlserver.query_hash ')
PRZY UŻYCIU (MAX_MEMORY = 4096 KB, EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS, MAX_DISPATCH_LATENCY = 30 SEKUND, MAX_EVENT_SIZE = 0 KB, MEMORY_PARTITION_MODE = NONE, TRACK_CAUSALITY = ON, STARTUP_STATE = OFF)
WYKRACZA
Rozwiązanie
Ten problem został rozwiązany w następujących zbiorczych aktualizacjach programu SQL Server:
Zbiorcza aktualizacja 10 dla programu SQL Server 2017
Zbiorcza aktualizacja 2 dla programu SQL Server 2016 z dodatkiem SP2
WartoW przypadku tej poprawki żadne zdarzenia xml_deadlock_report nie są zgłaszane dla zakleszczenia wewnątrz zapytań, gdy zakleszczenie można rozwiązać bez zabijania wątku.
Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla programu SQL Server:
Najnowsza Zbiorcza aktualizacja dla programu SQL Server 2017
Najnowsza Zbiorcza aktualizacja dla programu SQL Server 2016
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".
Informacje
Informacje o terminologiiużywanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.