KB978629 - OPRAVA: Chybová zpráva při použití relace system_health Extended Event k zachycení grafu zablokování v SQL Server 2008: "Zpráva 9436: Analýza XML: řádek 54, znak 12, koncová značka neodpovídá počáteční značce"

Platí pro
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 distribuuje opravy systému Microsoft SQL Server 2008 jako jeden soubor ke stažení. Vzhledem k tomu, že opravy jsou kumulativní, obsahuje každá nová verze všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí verze opravy pro SQL Server 2008.

Příznaky

Podívejte se na tento scénář: V databázi systému Microsoft SQL Server 2008 dojde k zablokování. Pak pomocí system_health Extended Event session zachytíte graf zablokování. V tomto scénáři se zobrazí následující chybová zpráva:

Poznámka

Zpráva 9436, úroveň 16, stav 1, řádek 1

Analýza XML: řádek 54, znak 12, koncová značka neodpovídá počáteční značce

Například spuštěním následujícího dotazu exportujete cíl buffer_ring z relace system_health, když dojde k zablokování:

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'

V tomto příkladu vrátí dotaz správný výsledek.

Můžete však také spustit následující dotaz a přetavit tento zablokovaný graf do formátu XML:

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'

V takové situaci očekáváte, že se blokovací graf zobrazí ve formátu XML. I když se graf zablokování zobrazí nesprávně, stále očekáváte platný obsah XML ze sestavy xml_deadlock_report. Zobrazí se však následující chybová zpráva:

Poznámka

Zpráva 9436, úroveň 16, stav 1, řádek 1
Analýza XML: řádek 54, znak 12, koncová značka neodpovídá počáteční značce

Příčina

K tomuto problému dochází, protože cesta kódu, která generuje schéma XML pro graf zablokování, přeskočí uzavírací značku elementu victim-list. Cesta kódu navíc přidává zbytečnou značku pro prvek zablokování.

Řešení

Oprava, která tento problém řeší, byla poprvé vydána v kumulativní aktualizaci 6 pro SQL Server 2008 Service Pack 1. Další informace o tomto balíčku kumulativních aktualizací naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:

977443 Balíček kumulativní aktualizace 6 pro SQL Server 2008 Service Pack 1Poznámka: Vzhledem k tomu, že buildy jsou kumulativní, obsahuje každá nová verze opravy všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí verze opravy pro SQL Server 2008. Doporučujeme zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:

970365 Buildy SQL Server 2008 vydané po vydání aktualizace Service Pack 1 SQL Server 2008
Opravy hotfix pro Microsoft SQL Server 2008 se vytvářejí pro konkrétní aktualizace Service Pack pro SQL Server. Opravu hotfix pro SQL Server 2008 Service Pack 1 je nutné nainstalovat k instalaci systému SQL Server 2008 Service Pack 1. Ve výchozím nastavení jsou všechny opravy hotfix poskytované v aktualizaci Service Pack pro SQL Server zahrnuty do další aktualizace Service Pack pro SQL Server.

SQL Server 2008 R2

Důležité: Tuto opravu musíte nainstalovat, pokud používáte SQL Server 2008 R2.

Oprava tohoto problému byla poprvé vydána v kumulativní aktualizaci 1. Další informace o získání tohoto balíčku kumulativní aktualizace pro SQL Server 2008 R2 naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:

981355 Balíček kumulativní aktualizace 1 pro SQL Server 2008 R2Note Vzhledem k tomu, že buildy jsou kumulativní, obsahuje každá nová verze opravy všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí verze opravy SQL Server 2008 R2. Doporučujeme zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:

981356 Buildy SQL Server 2008 R2, které byly vydány po vydání verze SQL Server 2008 R2

Stav

Společnost Microsoft potvrdila, že se jedná o problém produktů Microsoft, které jsou uvedeny v sekci Platí pro.

Reference

Informace o modelu přírůstkové údržby pro SQL Server naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:

935897 Tým SQL Server poskytuje k poskytování oprav hotfix pro hlášené problémy model přírůstkové údržby

Další informace o schématu pojmenování aktualizací pro aktualizace serveru SQL Server naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:

822499 Nové schéma pojmenovávání balíčků aktualizací softwaru Microsoft SQL Server
Další informace o terminologii aktualizací softwaru naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:

824684 Popis standardní terminologie používané k popisu aktualizací softwaru společnosti Microsoft