KB978629 – RJEŠENJE: poruka o pogrešci prilikom korištenja sesije system_health proširenog događaja za snimanje grafikona mrtve petlje u programu SQL Server 2008: "Msg 9436: XML parsing: line 54, character 12, end tag does not match start tag"

Primjenjuje se na
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 distribuira popravke za Microsoft SQL Server 2008 kao jednu datoteku koja se može preuzeti. Budući da su popravci kumulativni, svako novo izdanje sadrži sve hitne popravke i sigurnosne popravke koji su obuhvaćeni prethodnim izdanjem popravka za SQL Server 2008.

Simptomi

Promotrimo sljedeći scenarij. U bazi podataka Microsoft SQL Server 2008 dolazi do mrtve petlje. Nakon toga koristite sesiju system_health Prošireni događaj da biste snimili grafikon mrtve petlje. U tom se scenariju pojavljuje sljedeća poruka o pogrešci:

Napomena

poruka 9436, razina 16, županija 1, redak 1

XML raščlanjivanje: redak 54, znak 12, završna oznaka ne odgovara početnoj oznaci

Na primjer, izvršite sljedeći upit da biste buffer_ring cilj izvezli iz system_health sesije kada dođe do beskonačne petlje:

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'

U ovom primjeru upit vraća točan rezultat.

No možete pokrenuti i sljedeći upit da biste umetnuli taj graf mrtve petlje u XML oblik:

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'

U ovoj situaciji očekujete prikaz mrtve petlje u XML obliku. Čak i ako se grafikon mrtve petlje ne prikazuje pravilno, i dalje očekujete da ćete iz izvješća xml_deadlock_report vidjeti valjani XML sadržaj. No prikazuje vam se sljedeća poruka o pogrešci:

Napomena

poruka 9436, razina 16, županija 1, redak 1
XML raščlanjivanje: redak 54, znak 12, završna oznaka ne odgovara početnoj oznaci

Uzrok

Taj se problem pojavljuje jer put koda koji generira XML shemu za grafikon mrtve petlje preskače završnu oznaku elementa popisa žrtava. Osim toga, put koda dodaje nepotrebnu oznaku za element mrtve petlje.

Rješenje

Rješenje tog problema prvi je put objavljeno u kumulativnom ažuriranju 6 za SQL Server 2008 Service Pack 1. Dodatne informacije o tom paketu kumulativnog ažuriranja potražite u članku iz Microsoftove baze znanja pod brojem

977443 Paket kumulativnog ažuriranja 6 za SQL Server 2008 Service Pack 1Napomena Budući da su međuverzije kumulativne, svako novo izdanje popravka sadrži sve hitne popravke i sigurnosne popravke koji su obuhvaćeni prethodnim izdanjem popravaka za SQL Server 2008. Preporučujemo da razmislite o primjeni najnovijeg izdanja popravka koji sadrži taj hitni popravak. Za više informacija kliknite sljedeći broj članka da biste prikazali članak u Microsoftovoj bazi znanja:

970365 međuverzije SQL Server 2008 koje su izdane nakon izdanja servisnog paketa Service Pack 1 SQL Server 2008
Microsoft SQL Server 2008 hitni popravci stvaraju se za određene servisne pakete za SQL Server. Na instalaciju servisnog paketa SQL Server 2008 Service Pack 1 morate primijeniti hitni popravak servisnog paketa SQL Server 2008 Service Pack 1. Prema zadanim postavkama svi hitni popravci koji se nalaze u servisnom paketu za SQL Server uvrštavaju se u sljedeći servisni paket za SQL Server.

SQL Server 2008 R2

Važno Taj popravak morate instalirati ako koristite SQL Server 2008 R2.

Rješenje tog problema prvi je put objavljeno u kumulativnom ažuriranju 1. Dodatne informacije o nabavi paketa kumulativnog ažuriranja za SQL Server 2008 R2 potražite u članku iz Microsoftove baze znanja pod sljedećim brojem:

981355 Paket kumulativnog ažuriranja 1 za SQL Server 2008 R2Note Budući da su međuverzije kumulativne, svako novo izdanje popravka sadrži sve hitne popravke i sigurnosne popravke obuhvaćene prethodnim izdanjem popravaka za SQL Server 2008 R2. Preporučujemo da razmislite o primjeni najnovijeg izdanja popravka koji sadrži taj hitni popravak. Za više informacija kliknite sljedeći broj članka da biste prikazali članak u Microsoftovoj bazi znanja:

981356 međuverzije SQL Server 2008 R2 koje su izdane nakon izdanja sustava SQL Server 2008 R2

Status

Microsoft je potvrdio da je to problem u Microsoftovim proizvodima koji su navedeni u odjeljku „Odnosi se na“.

Reference

Dodatne informacije o modelu inkrementalnog servisiranja sustava SQL Server potražite u članku iz Microsoftove baze znanja pod brojem

935897 Tim za SQL Server dostupan je model inkrementalnog servisiranja za isporuku hitnih popravaka za prijavljene probleme

Dodatne informacije o shemi imenovanja za ažuriranja sustava SQL Server potražite u članku iz Microsoftove baze znanja pod sljedećim brojem:

822499 Nova shema imenovanja za pakete ažuriranja softvera za Microsoft SQL Server
Dodatne informacije o terminologiji ažuriranja softvera potražite u članku iz Microsoftove baze znanja pod sljedećim brojem:

824684 Opis standardne terminologije, koja se koristi za opis Microsoftovih softverskih ažuriranja