Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2008 в виде одного загружаемого файла. Поскольку исправления являются накопительными, каждый новый выпуск содержит все исправления и исправления для системы безопасности, которые были включены в предыдущий выпуск исправления SQL Server 2008.
Проблема
Рассмотрим следующий сценарий. Возникает взаимоблокировка в базе данных Microsoft SQL Server 2008. Затем с помощью сеанса расширенного события system_health можно зафиксировать граф взаимоблокировок. В этом случае появляется следующее сообщение об ошибке:
Примечание
MSG 9436, уровень 16, состояние 1, строка 1
Анализ XML: строка 54, символ 12, закрывающий тег не совпадает с начальным тегом
Например, вы выполните следующий запрос для экспорта целевого объекта buffer_ring из сеанса system_health при возникновении взаимоблокировки:
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'
В этом примере запрос возвращает правильный результат.
Однако вы также можете выполнить следующий запрос, чтобы перевести этот граф взаимоблокировок в формат 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'
В этой ситуации вы ожидаете увидеть граф взаимоблокировки в формате XML. Даже если граф взаимоблокировок отображается неправильно, вы все равно ожидаете увидеть допустимое содержимое XML из отчета xml_deadlock_report. Однако появляется следующее сообщение об ошибке:
Примечание
MSG 9436, уровень 16, состояние 1, строка 1
Анализ XML: строка 54, символ 12, закрывающий тег не совпадает с начальным тегом
Причина
Эта проблема возникает из-за того, что путь кода, который генерирует XML-схему для графа взаимоблокировок, пропускает закрывающий тег элемента списка жертв. Кроме того, путь к коду добавляет ненужный тег для элемента взаимоблокировки.
Решение
Исправление для этой проблемы было впервые выпущено в накопительном пакете обновления 6 для SQL Server 2008 с пакетом обновления 1. Дополнительные сведения об этом накопительном пакете обновления см. в следующей статье базы знаний Майкрософт:
977443 Накопительный пакет обновления 6 для SQL Server 2008 с пакетом обновления 1 Примечание Поскольку сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и исправления для системы безопасности, которые входили в предыдущий выпуск исправления SQL Server 2008 г. Рекомендуется рассмотреть возможность применения последнего выпуска исправления, содержащего это исправление. Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:
970365 Сборки SQL Server 2008 г., выпущенные после выпуска SQL Server 2008 с пакетом обновления 1 (SP1)
Исправления для Microsoft SQL Server 2008 предназначены для определенных пакетов обновления для SQL Server. Необходимо установить исправление для SQL Server 2008 с пакетом обновления 1 (SP1) для установки SQL Server 2008 с пакетом обновления 1. По умолчанию все исправления, предоставляемые в пакете обновления для SQL Server, входят в следующий пакет обновления для SQL Server.
SQL Server 2008 R2
Важно! Это исправление необходимо установить, если вы используете SQL Server 2008 R2.
Исправление для этой проблемы впервые выпущено в накопительном пакете обновления 1. Для получения дополнительной информации о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2, откройте статью со следующим номером в базе знаний Майкрософт:
Накопительный пакет обновления 1 981355 для SQL Server 2008 R2Note Поскольку сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и исправления для системы безопасности, которые были включены в предыдущий выпуск исправления SQL Server 2008 R2. Рекомендуется рассмотреть возможность применения последнего выпуска исправления, содержащего это исправление. Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:
981356 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».
Ссылки
Для получения сведений о модели добавочного обслуживания для SQL Server щелкните номер статьи со следующим номером в базе знаний Майкрософт:
935897 Команда SQL Server предоставляет модель добавочного обслуживания для предоставления исправлений для обнаруженных проблем
Дополнительные сведения о схеме именования для обновлений SQL Server см. в следующей статье базы знаний Майкрософт:
822499 Новая схема именования пакетов обновления программного обеспечения Microsoft SQL Server
Дополнительные сведения о терминологии обновления программного обеспечения см. в следующей статье базы знаний Майкрософт:
824684 Стандартные термины, используемые при описании обновлений программного обеспечения Майкрософт