Oprava: Chybová zpráva při použití relace system_health Extended událostí k zachycení zablokování grafu v SQL Server 2008: "Msg 9436: při analýze XML: řádek 54 znaků 12, koncová značka neodpovídá počáteční značku"

Společnost Microsoft distribuuje opravy Microsoft SQL Server 2008 jako jednoho souboru ke stažení. Protože jsou kumulativní opravy, každá nová verze tedy obsahuje všechny opravy hotfix a opravit všechny opravy zabezpečení, které byly součástí předchozích SQL Server 2008 release.

Příznaky

Zvažte následující scénář. V databázi Microsoft SQL Server 2008 dojde k zablokování. Potom pomocí relace system_health Extended událostí k zachycení zablokování grafu. V tomto scénáři obdržíte následující chybová zpráva:
Msg 9436, úroveň 16 stav 1, řádek 1

Při analýze XML: řádek 54 znaků 12, koncová značka neodpovídá počáteční značku
Například spustíte následující dotaz, ze které chcete exportovat cílové buffer_ring system_health relace, dojde k zablokování:
select XEventData.XEvent.value('(data/value)[1]', 'varchar(max)') as DeadlockGraphFROM
(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 dotaz vrátí správný výsledek.

Můžete však také spuštěním následujícího dotazu převést toto zablokování grafu ve formátu XML:
select cast(XEventData.XEvent.value('(data/value)[1]', 'varchar(max)') as xml) as DeadlockGraphFROM
(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 této situaci můžete očekávat zablokování grafu ve formátu XML. I v případě zablokování grafu je zobrazena správně, stále očekáváte, chcete-li zobrazit obsah ze sestavy xml_deadlock_report platný kód XML. Však zobrazí následující chybová zpráva:
Msg 9436, úroveň 16 stav 1, řádek 1
Při analýze XML: řádek 54 znaků 12, koncová značka neodpovídá počáteční značku

Příčina

K tomuto problému dochází, protože kód cestu, která generuje graph zablokování schéma XML přeskočí uzavírací značku prvku seznamu obětí . Dále cesty kódu přidá zbytečné značku zablokování prvku.

Řešení


Oprava tohoto problému byla vydána nejprve v kumulativní aktualizace 6 pro SQL Server 2008 Service Pack 1. Další informace o tomto balíčku kumulativní aktualizace klepněte na následující číslo článku databáze Microsoft Knowledge Base:
977443 kumulativní aktualizace 6 pro SQL Server 2008 Service Pack 1
Poznámka: Vzhledem k tomu, sestavení jsou kumulativní, každá nová verze oprava obsahuje všechny opravy hotfix a opravit všechny opravy zabezpečení, které byly součástí předchozích SQL Server 2008 release. Doporučujeme zvážit použití nejnovější vydání oprava, která obsahuje tuto opravu hotfix. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
970365 SQL Server 2008 sestavení, které byly vydány po vydání SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 opravy hotfix jsou vytvořeny pro konkrétní aktualizace service Pack pro SQL Server. Opravy hotfix serveru SQL Server 2008 Service Pack 1 musí použít k instalaci aplikace SQL Server 2008 Service Pack 1. Ve výchozím žádné opravy hotfix, která je poskytována v aktualizace service pack serveru SQL Server je součástí další aktualizaci service pack pro SQL Server.


SQL Server 2008 R2

Důležité: Pokud používáte systém SQL Server 2008 R2 je nutné nainstalovat tuto opravu.

Oprava tohoto problému byla vydána nejprve v kumulativní aktualizaci 1. Další informace o možnostech získání tohoto balíčku kumulativní aktualizace pro SQL Server 2008 R2 klepněte na následující číslo článku databáze Microsoft Knowledge Base:

981355 balíček kumulativní aktualizace 1 pro SQL Server 2008 R2
Poznámka: Vzhledem k tomu, sestavení jsou kumulativní, každá nová verze oprava obsahuje všechny opravy hotfix a opravit všechny opravy zabezpečení, které byly součástí předchozích SQL Server 2008 R2 release. Doporučujeme zvážit použití nejnovější vydání oprava, která obsahuje tuto opravu hotfix. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

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

Stav

Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedeny v části "Platí pro".

Odkazy

Informace o přírůstkové Model servis pro SQL Server klepněte na následující číslo článku databáze Microsoft Knowledge Base:

935897 dílčí Model obsluhy je k dispozici z týmu SQL Server doručit opravy hotfix pro nahlášené potíže


Další informace o schéma názvů pro aktualizace serveru SQL Server klepněte na následující číslo článku databáze Microsoft Knowledge Base:

822499 Nové schéma přidělování názvů balíčkům aktualizací softwaru Microsoft SQL Server pro

Pro další informace o terminologii používané v aktualizacích softwaru, klepněte na následující číslo článku k zobrazení článku v databázi Microsoft Knowledge Base:
824684 Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft
Vlastnosti

ID článku: 978629 - Poslední kontrola: 13. 1. 2017 - Revize: 2

Váš názor