Управление таблицей 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 .

    • ALTER DATABASE REMOVE FILE

    • DROP DATABASE

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

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

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

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

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

Разрешения

Сведения в таблице suspect_pages доступны любому пользователю, имеющему доступ к базе данных msdb . Информация в таблице suspect_pages может обновляться любым пользователем, обладающим разрешением UPDATE. Члены предопределенной роли базы данных 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)