你目前正处于脱机状态,正在等待 Internet 重新连接

修复: 捕获死锁图形 SQL Server 2008年中的使用 system_health 扩展事件会话时的错误消息:"Msg 9436: XML 分析: 行 54,字符 12、 结束标记与开始标记不匹配"

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 978629
Microsoft 将 Microsoft SQL Server 2008年修补程序分发作为一个可下载的文件。修补程序是累积性的因为每个新版本包含的所有修补程序和所有安全修补程序包括使用以前的 SQL Server 2008年修补程序版本。
症状
请考虑下面的方案。在 Microsoft SQL Server 2008年数据库中,将出现死锁。然后,使用 system_health 扩展事件会话来捕获死锁图形。在此方案中,您会收到以下错误消息:
消息 9436,级别 16,状态 1,第 1 行
XML 分析: 行 54,字符 12、 结束标记与开始标记不匹配
例如,运行下面的查询来导出从 buffer_ring 目标 system_health 当死锁发生时的会话:
select XEventData.XEvent.value('(data/value)[1]', 'varchar(max)') as DeadlockGraphFROM(select CAST(target_data as xml) as TargetDatafrom sys.dm_xe_session_targets stjoin sys.dm_xe_sessions s on s.address = st.event_session_addresswhere name = 'system_health') AS DataCROSS APPLY TargetData.nodes ('//RingBufferTarget/event') AS XEventData (XEvent)where XEventData.XEvent.value('@name', 'varchar(4000)') = 'xml_deadlock_report'
在此示例中,查询会返回正确的结果。

但是,您还可以运行下面的查询来强制此死锁的图形转换为 XML 格式:
select cast(XEventData.XEvent.value('(data/value)[1]', 'varchar(max)') as xml) as DeadlockGraphFROM(select CAST(target_data as xml) as TargetDatafrom sys.dm_xe_session_targets stjoin sys.dm_xe_sessions s on s.address = st.event_session_addresswhere name = 'system_health') AS DataCROSS APPLY TargetData.nodes ('//RingBufferTarget/event') AS XEventData (XEvent)where XEventData.XEvent.value('@name', 'varchar(4000)') = 'xml_deadlock_report'
在此情况下,您会看到死锁图形以 XML 格式。即使死锁图形显示不正确,您仍然希望看到有效的 XML 内容从 xml_deadlock_report 报告。但是,您会收到以下错误消息:
消息 9436,级别 16,状态 1,第 1 行
XML 分析: 行 54,字符 12、 结束标记与开始标记不匹配
原因
出现此问题的原因产生死锁图形的 XML 架构的代码路径跳过的结束标记 受害者列表 元素。另外,将代码路径添加不必要标记 死锁 元素。
解决方案
此问题的修补程序是首次推出的 SQL Server 2008 Service Pack 1 的累积更新 6 中。有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
977443 对于 SQL Server 2008 Service Pack 1 的累积更新包 6
注意 生成是累积性的因为每个新修补程序版本包含的所有修补程序和所有安全修补程序包括使用以前的 SQL Server 2008年修补程序版本。我们建议您考虑将应用最新的修补程序版本包含此修复程序。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
970365 SQL Server 2008年生成发布 SQL Server 2008 Service Pack 1 之后发布
Microsoft SQL Server 2008年修补程序会创建特定的 SQL Server 服务包。您必须将 SQL Server 2008 Service Pack 1 修补程序应用于 SQL Server 2008 Service Pack 1 的安装。默认情况下任何 SQL Server service pack 中提供的修补程序包含在下一步的 SQL Server service pack。

SQL Server 2008 R2

重要 如果您正在运行 SQL Server 2008 R2,您必须安装此修复程序。

此问题的修补程序是累积更新 1 中首次推出。有关如何获取此累积更新包的 SQL Server 2008 R2 的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

981355 SQL Server 2008 R2 的累积更新包 1
注意 生成是累积性的因为每个新修补程序版本包含的所有修补程序和所有安全修补程序附带以前 SQL Server 2008 R2 修补都程序版本。我们建议您考虑将应用最新的修补程序版本包含此修复程序。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

981356 SQL Server 2008 R2 生成 SQL Server 2008 R2 发布后发布

状态
Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的一个问题。
参考
有关增量服务模型为 SQL Server 的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
935897 增量的处理模型都可用从 SQL Server 团队提供的报告的问题的修补程序

有关命名架构的 SQL Server 更新的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
822499Microsoft SQL Server 软件更新程序包的新命名架构

有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684 用于描述 Microsoft 软件更新的标准术语的说明

警告:本文已自动翻译

属性

文章 ID:978629 - 上次审阅时间:10/11/2011 22:44:00 - 修订版本: 1.0

Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Workgroup

  • kbexpertiseadvanced kbsurveynew kbqfe kbfix kbmt KB978629 KbMtzh
反馈