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


Управление таблицей suspect_pages (SQL Server)

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

В этом разделе описывается управление таблицей suspect_pages в SQL Server с помощью SQL Server Management Studio или Transact-SQL. Таблица suspect_pages содержит сведения о потенциально поврежденных страницах и используется при принятии решений о необходимости восстановления. Таблица suspect_pages находится в базе данных msdb.

Страница считается подозрительной, когда SQL Server ядро СУБД сталкивается с одной из следующих ошибок при попытке прочитать страницу данных:

  • Ошибка 823, вызванная проверкой циклической контрольной суммы (CRC), проведённой операционной системой, такой как ошибка диска (определённые ошибки оборудования)

  • Ошибка 824, например разрыв страницы (или любая другая логическая ошибка)

Идентификатор каждой "подозрительной" страницы записывается в таблицу suspect_pages . Ядро СУБД записывает все подозрительные страницы, возникающие во время регулярной обработки, например следующие:

  • Запрос должен считать страницу.

  • При выполнении инструкции DBCC CHECKDB.

  • Во время операции резервного копирования.

Во время операции восстановления, исправления DBCC или удаления базы данных таблица suspect_pages обновляется по мере необходимости.

В этом разделе

Перед началом

Рекомендации

  • Ошибки, зафиксированные в таблице suspect_pages

    Таблица suspect_pages содержит по одной строке на каждую страницу, в которой обнаружена ошибка с номером 824, но не более 1000 строк. В следующей таблице приводятся ошибки, занесенные в столбец event_type таблицы suspect_pages .

    Описание ошибки Значение event_type
    Ошибка 823, вызванная ошибкой CRC операционной системы, или ошибка 824, не относящаяся к неверной контрольной сумме или обрыву страницы (например, неверный идентификатор страницы). 1
    Неверная контрольная сумма 2
    Разорванная страница 3
    Восстановлена (страница была восстановлена после того, как была помечена поврежденной) 4
    Исправлена (страница была восстановлена с помощью DBCC) 5
    Деаллоцирована с помощью DBCC 7

    В таблицу suspect_pages записываются также нерегулярные ошибки. Источниками временных ошибок могут быть ошибки ввода-вывода (например, отсоединение кабеля) или временно возникающая ошибка проверки контрольной суммы страницы.

  • Как механизм Database Engine обновляет таблицу suspect_pages

    Ядро СУБД выполняет следующие действия в таблице suspect_pages:

    • Если таблица не заполнена, она обновляется для каждой ошибки с номером 824 для указания на наличие ошибки; при этом счетчик ошибок увеличивается на единицу. Если страница содержит ошибку после того, как она была исправлена, восстановлена или деактивирована, ее счетчик number_of_errors увеличивается на единицу и изменяется значение столбца last_update.

    • После того как указанная страница исправлена операцией восстановления или исправления, в соответствующей строке обновляется столбец suspect_pages , указывая, что страница исправлена (event_type = 5) или восстановлена (event_type = 4).

    • В ходе проверки базы данных (DBCC) все страницы, не содержащие ошибок, помечаются как исправленные (event_type = 5) или освобожденные (event_type = 7).

  • Автоматические обновления таблицы suspect_pages

    Участник зеркального отображения базы данных или реплика доступности AlwaysOn обновляет таблицу suspect_pages, если попытка чтения страницы из файла данных завершается одной из следующих ошибок.

    • Ошибка 823, вызываемая ошибкой CRC операционной системы.

    • Ошибка 824 (логическая ошибка, например разрыв страницы).

    Следующие действия также автоматически обновляют строки в таблице suspect_pages .

    • Инструкция DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS обновляет таблицу suspect_pages , отмечая освобождение или исправление каждой страницы.

    • Операция полного восстановления, восстановления файла или страницы помечает записи страниц как восстановленные.

    Следующие действия автоматически удаляют строки из таблицы suspect_pages .

    • ИЗМЕНИТЬ БАЗУ ДАННЫХ УДАЛИТЬ ФАЙЛ

    • УДАЛИТЬ БАЗУ ДАННЫХ

  • Задачи обслуживания, выполняемые администратором базы данных

    За обслуживание таблицы, преимущественно за удаление старых строк, отвечают администраторы базы данных. Размер таблицы suspect_pages ограничен, поэтому после того, как она заполнена, новые ошибки в нее не заносятся. Чтобы не допустить переполнения таблицы, администратор базы данных или системный администратор должен вручную удалить из нее старые строки. Поэтому рекомендуется периодически удалять или архивировать строки, которые имеют event_type 'восстановлен' или 'отремонтирован', или у которых устаревшее значение last_update.

    Для наблюдения за ситуацией в таблице "suspect_pages" можно использовать класс событий Database Suspect Data Page. Строки иногда добавляются в таблицу suspect_pages из-за временных ошибок. Однако если в таблицу добавляется множество строк, то, скорее всего, проблема существует в подсистеме ввода-вывода. Если было замечено резко возросшее количество строк, добавляемых в систему, то рекомендуется провести диагностику подсистемы ввода-вывода на предмет возможных проблем.

    Администратор базы данных может также вставлять или обновлять записи. Например, обновление строк может оказаться полезным, если администратор базы данных знает, что какая-нибудь из сомнительных страниц на самом деле исправна, но хочет на время сохранить соответствующую запись.

Безопасность

Разрешения

Сведения в таблице suspect_pages доступны любому пользователю, имеющему доступ к базе данных msdb . Любой пользователь, обладающий разрешением на UPDATE, может обновлять записи в таблице suspect_pages. Члены предопределенной роли базы данных db_owner в msdb или предопределенной роли сервера sysadmin могут вставлять, обновлять и удалять записи.

Использование среды SQL Server Management Studio

Управление таблицей suspect_pages

  1. В Обозревателе объектов подключитесь к экземпляру ядра СУБД SQL Server, разверните этот экземпляр и разверните Базы данных.

  2. Разверните последовательно узлы Системные базы данных, msdb, Таблицы и Системные таблицы.

  3. Разверните узел dbo.suspect_pages и щелкните правой кнопкой мыши Изменить верхние 200 строк.

  4. В окне запроса измените, обновите или удалите необходимые строки.

Использование Transact-SQL

Управлять таблицей suspect_pages

  1. Подключитесь к СУБД.

  2. На панели «Стандартная» нажмите Создать запрос.

  3. Скопируйте следующие примеры в окно запроса и нажмите кнопку Выполнить. В следующем примере продемонстрировано удаление некоторых строк из таблицы suspect_pages .

-- Delete restored, repaired, or deallocated pages.  
DELETE FROM msdb..suspect_pages  
   WHERE (event_type = 4 OR event_type = 5 OR event_type = 7);  
GO  
  

В этом примере происходит возврат поврежденных страниц в таблице suspect_pages .

-- Select nonspecific 824, bad checksum, and torn page errors.  
SELECT * FROM msdb..suspect_pages  
   WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);  
GO  
  

См. также

DROP DATABASE (Transact-SQL) — Команда для удаления базы данных
RESTORE (Transact-SQL)
BACKUP (Transact-SQL)
DBCC (Transact-SQL)
Восстановление страниц (SQL Server)
suspect_pages (Transact-SQL)