Ongelman ilmenemistapa
Oletetaan, että käytät Microsoft SQL Server 2016:ta ja 2017:ää. Jos otat käyttöön tapahtuman xml_deadlock_report kerätä tietoja lukkiutumista varten, useita xml_deadlock_report tapahtumia raportoidaan yhdelle kyselyn sisäiselle lukkiutumistapahtumalle.
Vaihtoehtoinen menetelmä
Tämän ongelman vaihtoehtoisena menetelmänä voit kerätä error_reported XEvent käyttämällä suodatinta error_number = 1205xml_deadlock_report:n sijaan, kuten seuraavassa esimerkissä:
Huomautus
- LUO TAPAHTUMAISTUNTO [Deadlock_Collection] PALVELIMESSA
- ADD EVENT sqlserver.error_reported(
- WHERE ([error_number]=(1205)))
- ADD TARGET package0.histogram(SET filtering_event_name=N'sqlserver.lock_acquired',source=N'sqlserver.query_hash')
- WITH (MAX_MEMORY=4096 kt,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SEKUNTIA,MAX_EVENT_SIZE=0 kt,MEMORY_PARTITION_MODE=EI MITÄÄN,TRACK_CAUSALITY=KÄYTÖSSÄ,STARTUP_STATE=EI KÄYTÖSSÄ)
- SIIRRY
Ratkaisu
Tämä ongelma on korjattu seuraavissa SQL Server kumulatiivisissa päivityksissä:
SQL Server 2017:n kumulatiivinen päivitys 10
SQL Server 2016 SP2:n kumulatiivinen päivitys 2
Huomautus: Tämän korjauksen ansiosta xml_deadlock_report tapahtumia ei raportoida kyselyn sisäisestä lukkiutumisesta, kun lukkiutuminen voidaan ratkaista sulkematta säiettä.
Tietoja SQL Server:n kumulatiivisista päivityksistä:
Jokainen uusi SQL Server -kumulatiivinen päivitys sisältää kaikki edelliseen kumulatiiviseen päivitykseen sisältyvät hotfix-korjaukset ja tietoturvakorjaukset. Tutustu SQL Serverin uusimpiin kumulatiivisiin päivityksiin:
SQL Server 2017:n uusin kumulatiivinen päivitys
SQL Server 2016:n uusin kumulatiivinen päivitys
Tila
Microsoft on vahvistanut tämän olevan ongelma niissä Microsoftin tuotteissa, jotka ovat listattuna Koskee seuraavia tuotteita -osiossa.
Viitteet
Lue tietoja Microsoftin ohjelmistopäivitystensä kuvaamiseen käyttämästä sanastosta.