MSSQLSERVER_605
Подробности
Название продукта |
SQL Server |
Номер версии продукта |
10.0 |
Номер сборки продукта |
|
Идентификатор события |
605 |
Источник события |
MSSQLSERVER |
Компонент |
SQLEngine |
Символическое имя |
WRONGPAGE |
Текст сообщения |
Не удалось выбрать логическую страницу с идентификатором %S_PGID в базе данных %d. Она принадлежит единице распределения %I64d, а не %I64d. |
Объяснение
Обычно эта ошибка свидетельствует о повреждении страниц или об ошибке при их выделении в указанной базе данных. SQL Server выявляет это при чтении страниц таблицы либо по указателям, либо через карту распределения индекса (IAM). Все относящиеся к таблице страницы должны принадлежать одной из единиц распределения, связанных с данной таблицей. Если идентификатор единицы распределения, содержащийся в заголовке страницы, не соответствует идентификатору единицы распределения, связанной с таблицей, возникает это исключение. Первый идентификатор единицы распределения, приведенный в сообщении об ошибке, содержится в заголовке страницы, а второй является идентификатором, связанным с таблицей.
Ошибки повреждения данных
Уровень серьезности 21 указывает на потенциальное повреждение данных. Его причиной может стать повреждение цепочки страниц, карты распределения индекса или неверная запись в представлении каталога sys.objects для данного объекта. Зачастую такие ошибки вызваны сбоем оборудования или драйвера дискового устройства.
Нерегулярные ошибки
Уровень серьезности 12 означает потенциальную нерегулярную ошибку. Такие ошибки возникают в кэше и не указывают на повреждение данных на диске. Нерегулярные ошибки 605 могут быть вызваны следующими причинами.
- Операционная система преждевременно извещает SQL Server о завершении операции ввода-вывода. В таком случае будет выдано сообщение об ошибке, хотя реальное повреждение данных места не имело.
Запуск запроса с подсказкой оптимизатору NOLOCK или задание уровня изоляции транзакций READ UNCOMMITTED. Когда запрос с подсказкой NOLOCK или на уровне изоляции READ UNCOMMITTED пытается прочитать данные, которые перемещены или изменены другим пользователем, возникает ошибка 605. Чтобы убедиться, что имеет место нерегулярная ошибка 605, перезапустите запрос позже. Дополнительные сведения см. в статье базы знаний 235880: «При выполнении запроса с подсказкой оптимизатору NOLOCK или при установке уровня изоляции транзакции в значение READ UNCOMMITTED в SQL Server получено сообщение об ошибке «Ошибка 605».
Как правило, если эта ошибка возникла при доступе к данным, но последующие операции DBCC CHECKDB завершились успешно, то скорее всего ошибка 605 была нерегулярной.
Действия пользователя
Если ошибка 605 появляется регулярно, это означает, что возникла серьезная проблема, которая должна быть решена путем выполнения следующих задач.
Выясните, какие таблицы связаны с указанными в сообщении единицами распределения, запустив следующий запрос. Замените allocation_unit_id указанными в сообщении об ошибке единицами распределения.
USE database_name;
GO
SELECT au.allocation_unit_id, OBJECT_NAME(p.object_id) AS table_name, fg.name AS filegroup_name,
au.type_desc AS allocation_type, au.data_pages, partition_number
FROM sys.allocation_units AS au
JOIN sys.partitions AS p ON au.container_id = p.partition_id
JOIN sys.filegroups AS fg ON fg.data_space_id = au.data_space_id
WHERE au.allocation_unit_id = allocation_unit_id OR au.allocation_unit_id = allocation_unit_id
ORDER BY au.allocation_unit_id;
GO
Выполните инструкцию DBCC CHECKTABLE без предложения REPAIR для таблицы, связанной со вторым идентификатором единицы распределения, указанным в сообщении об ошибке.
Выполните инструкцию DBCC CHECKDB без предложения REPAIR как можно скорее, чтобы выявить весь поврежденный экстент в базе данных.
Проверьте в журнале ошибок наличие других ошибок, которые обычно сопровождают ошибку 605 и выясните, не указывают ли они на какие-либо проблемы, связанные с системой или оборудованием. Устраните все неполадки оборудования, обнаруженные в журналах.
Если проблема не связана с оборудованием, выполните одну из следующих задач.
Восстановите базу данных из безошибочной резервной копии. Восстановление страниц позволяет эффективно восстанавливать из резервных копий только поврежденные страницы.
Для исправления повреждения запустите инструкцию DBCC CHECKDB с предложением REPAIR согласно рекомендации операции DBCC CHECKDB, выполненной на шаге 3. Если в результате выполнения инструкции DBCC CHECKDB с одним из предложений REPAIR неполадка устранена не была, обратитесь к основному поставщику услуг технической поддержки. Подготовьте к просмотру выходные данные инструкции DBCC CHECKDB.
Внимание!Если достоверно не известно, к каким последствиям приведет выполнение инструкции DBCC CHECKDB с выбранным предложением REPAIR, перед выполнением этой инструкции обратитесь к основному поставщику услуг технической поддержки.