KB978629 - ÅTGÄRDAT: Felmeddelande när du använder system_health Extended Event-sessionen för att fånga ett deadlock-diagram i SQL Server 2008: "Msg 9436: XML-tolkning: rad 54, tecken 12, sluttagg matchar inte starttagg"

Gäller för
SQL Server 2008 R2 Standard SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Developer SQL Server 2008 R2 Workgroup SQL Server 2008 Standard SQL Server 2008 Enterprise SQL Server 2008 Developer SQL Server 2008 Workgroup

Microsoft distribuerar Microsoft SQL Server 2008-korrigeringar som en nedladdningsbar fil. Eftersom korrigeringarna är kumulativa innehåller varje ny version alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingick i den tidigare SQL Server 2008-korrigeringsversionen.

Symptom

Tänk dig följande scenario. I en Microsoft SQL Server 2008-databas uppstår ett dödläge. Sedan använder du system_health Extended Event-sessionen för att fånga deadlock-diagrammet. I det här scenariot får du följande felmeddelande:

Obs

Msg 9436, nivå 16, status 1, rad 1

XML-tolkning: rad 54, tecken 12, sluttaggen matchar inte starttaggen

Du kan till exempel köra följande fråga för att exportera det buffer_ring målet från system_health-sessionen när en deadlock inträffar:

select XEventData.XEvent.value('(data/value)[1]', 'varchar(max)') as DeadlockGraph
FROM
(select CAST(target_data as xml) as TargetData
from sys.dm_xe_session_targets st
join sys.dm_xe_sessions s on s.address = st.event_session_address
where name = 'system_health') AS Data
CROSS APPLY TargetData.nodes ('//RingBufferTarget/event') AS XEventData (XEvent)
where XEventData.XEvent.value('@name', 'varchar(4000)') = 'xml_deadlock_report'

I det här exemplet returnerar frågan rätt resultat.

Men du kan också köra följande fråga för att omvandla det här deadlock-diagrammet i XML-format:

select cast(XEventData.XEvent.value('(data/value)[1]', 'varchar(max)') as xml) as DeadlockGraph
FROM
(select CAST(target_data as xml) as TargetData
from sys.dm_xe_session_targets st
join sys.dm_xe_sessions s on s.address = st.event_session_address
where name = 'system_health') AS Data
CROSS APPLY TargetData.nodes ('//RingBufferTarget/event') AS XEventData (XEvent)
where XEventData.XEvent.value('@name', 'varchar(4000)') = 'xml_deadlock_report'

I det här fallet förväntar du dig att se dödlägesdiagrammet i XML-format. Även om deadlock-diagrammet visas felaktigt kan du ändå förvänta dig att se giltigt XML-innehåll från xml_deadlock_report rapporten. Du får dock följande felmeddelande:

Obs

Msg 9436, nivå 16, status 1, rad 1
XML-tolkning: rad 54, tecken 12, sluttaggen matchar inte starttaggen

Orsak

Det här problemet beror på att kodsökvägen som genererar XML-schemat för deadlock-diagrammet hoppar över den avslutande taggen för elementet i offerlistan. Dessutom lägger kodsökvägen till en onödig tagg för deadlock-elementet.

Lösning

Korrigeringen för det här problemet släpptes först i kumulativ uppdatering 6 för SQL Server 2008 Service Pack 1. Om du vill veta mer om det här kumulativa uppdateringspaketet klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

977443 Kumulativ uppdatering paket 6 för SQL Server 2008 Service Pack 1Note Eftersom versionerna är kumulativa innehåller varje ny korrigeringsversion alla snabbkorrigeringar och säkerhetskorrigeringar som ingick i den tidigare SQL Server 2008-korrigeringsversionen. Vi rekommenderar att du installerar den senaste snabbkorrigeringen som innehåller den här snabbkorrigeringen. Mer information om hur du åtgärdar det här problemet får du om du klickar på följande artikelnummer i Microsoft Knowledge Base:

970365 SQL Server 2008-versionerna som släpptes efter att Service Pack 1 SQL Server 2008 släpptes
Microsoft SQL Server 2008 snabbkorrigeringar skapas för specifika SQL Server Service Packs. Du måste använda en snabbkorrigering för SQL Server 2008 Service Pack 1 på en installation av SQL Server 2008 Service Pack 1. Som standard ingår snabbkorrigeringar i en SQL Server Service Pack i nästa SQL Server Service Pack.

SQL Server 2008 R2

Viktigt! Du måste installera den här korrigeringen om du kör SQL Server 2008 R2.

Korrigeringen för det här problemet släpptes först i kumulativ uppdatering 1. Om du vill veta mer om hur du hämtar det här kumulativa uppdateringspaketet för SQL Server 2008 R2 klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

981355 kumulativt uppdateringspaket 1 för SQL Server 2008 R2Note Eftersom versionerna är kumulativa innehåller varje ny korrigeringsversion alla snabbkorrigeringar och säkerhetskorrigeringar som ingick i den tidigare SQL Server 2008 R2-korrigeringsversionen. Vi rekommenderar att du installerar den senaste snabbkorrigeringen som innehåller den här snabbkorrigeringen. Mer information om hur du åtgärdar det här problemet får du om du klickar på följande artikelnummer i Microsoft Knowledge Base:

981356 De SQL Server 2008 R2-versionerna som släpptes efter att SQL Server 2008 R2 släpptes

Status

Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".

Referenser

Om du vill veta mer om modellen för stegvisa tjänster för SQL Server klickar du på artikelnumret nedan och läser artikeln i Microsoft Knowledge Base:

935897 En stegvis servicemodell är tillgänglig från SQL Server-teamet för att leverera snabbkorrigeringar för rapporterade problem

Om du vill veta mer om namnschemat för SQL Server uppdateringar klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

822499 Nytt namnschema för Microsoft SQL Server programuppdateringspaket
Om du vill veta mer om terminologi för programuppdateringar klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

824684 Beskrivning av standardterminologin som används för att beskriva Microsofts programuppdateringar