Симптоми
Да предположим, че използвате Microsoft SQL Server 2016 и 2017. Ако разрешите на xml_deadlock_report на събитието да събира данни за блокирания, много xml_deadlock_report събития се отчитат за една единична поява на блокиране в рамките на заявка.
Заобиколно решение
Като заобиколно решение на този проблем можете да съберете error_reported XEvent, като използвате филтър error_number = 1205 вместо xml_deadlock_report, както се вижда в следния пример:
Забележка
- СЪЗДАВАНЕ НА СЕСИЯ НА СЪБИТИЕ [Deadlock_Collection] НА СЪРВЪРА
- ДОБАВЯНЕ sqlserver.error_reported НА СЪБИТИЕ (
- WHERE ([error_number]=(1205)))
- ADD TARGET package0.histogram(SET filtering_event_name=N'sqlserver.lock_acquired';source=N'sqlserver.query_hash')
- С (MAX_MEMORY=4096 КБ EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 СЕКУНДИ,MAX_EVENT_SIZE=0 КБ MEMORY_PARTITION_MODE=НЯМА,TRACK_CAUSALITY=ВКЛ.STARTUP_STATE=ИЗКЛ.)
- GO
Решение
Този проблем е решен в следните кумулативни актуализации за SQL Server:
Сборна актуализация 10 за SQL Server 2017
Сборна актуализация 2 за SQL Server 2016 SP2
Забележка: С тази корекция не се докладват събития на xml_deadlock_report за блокиране в рамките на заявка, когато блокирането може да бъде разрешено без прекратяване на нишка.
За кумулативните актуализации за SQL Server:
Всяка нова кумулативна актуализация за SQL Server съдържа всички актуални поправки и корекции на защитата, които са били включени в предишната кумулативна актуализация. Прегледайте последните кумулативни актуализации за SQL Server:
Последна сборна актуализация за SQL Server 2017
Последна сборна актуализация за SQL Server 2016
Състояние
Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.
Справки
Научете повече относно терминологията, която Microsoft използва за описване на актуализациите на софтуера.