Поделиться через


MSSQLSERVER_605

Область применения: SQL Server

Сведения

Атрибут Значение
Название продукта SQL Server
ИД события 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, перезапустите запрос позже.

Как правило, если эта ошибка возникла при доступе к данным, но последующие операции DBCC CHECKDB завершились успешно, то скорее всего ошибка 605 была нерегулярной.

Действие пользователя

Если ошибка 605 появляется регулярно, это означает, что возникла серьезная проблема, которая должна быть решена путем выполнения следующих задач.

  1. Выясните, какие таблицы связаны с указанными в сообщении единицами распределения, запустив следующий запрос. Замените 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  
    
  2. Выполните инструкцию DBCC CHECKTABLE без предложения REPAIR для таблицы, связанной со вторым идентификатором единицы распределения, указанным в сообщении об ошибке.

  3. Выполните инструкцию DBCC CHECKDB без предложения REPAIR как можно скорее, чтобы выявить весь поврежденный экстент в базе данных.

  4. Проверьте в журнале ошибок наличие других ошибок, которые обычно сопровождают ошибку 605 и выясните, не указывают ли они на какие-либо проблемы, связанные с системой или оборудованием. Исправьте все неполадки оборудования, обнаруженные в журналах.

Если проблема не связана с оборудованием, выполните одну из следующих задач.

  1. Восстановите базу данных из безошибочной резервной копии. Восстановление страниц позволяет эффективно восстанавливать из резервных копий только поврежденные страницы.

  2. Для исправления повреждения запустите инструкцию DBCC CHECKDB с предложением REPAIR согласно рекомендации операции DBCC CHECKDB, выполненной на шаге 3. Если в результате выполнения инструкции DBCC CHECKDB с одним из предложений REPAIR неполадка устранена не была, обратитесь к вашему основному поставщику услуг технической поддержки. Подготовьте к просмотру выходные данные инструкции DBCC CHECKDB.

    Внимание

    Если достоверно неизвестно, к каким последствиям приведет выполнение инструкции DBCC CHECKDB с выбранным предложением REPAIR, перед выполнением этой инструкции обратитесь к вашему основному поставщику услуг технической поддержки.

См. также

DBCC CHECKTABLE (Transact-SQL)