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

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

Страница считается «подозрительной», если при попытке ее чтения компонентом Компонент SQL Server Database Engine обнаруживается одна из следующих ошибок.

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

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

Идентификатор каждой «подозрительной» страницы записывается в таблицу suspect_pages. В эту таблицу записываются все подозрительные страницы, которые встретились при обработке, в частности:

  • При обработке запроса необходимо считать страницу.

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

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

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

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

  • Перед началом работы выполните следующие действия.

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

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

  • Управление таблицей suspect_pages с помощью:

    Среда SQL Server Management Studio

    Transact-SQL

Перед началом работы

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

  • Ошибки, заносящиеся в таблицу suspect_pages

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

    Описание ошибки

    Значение event_type

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

    1

    Неверная контрольная сумма

    2

    Разрыв страницы

    3

    Восстановлена (страница была восстановлена после того, как была помечена поврежденной)

    4

    Исправлена (в ходе проверки базы данных DBCC)

    5

    Удалена при выполнении DBCC

    7

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

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

    Компонент Компонент Database Engine выполняет с таблицей 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 Database Engine, разверните его, а затем разверните узел Базы данных.

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

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

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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

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

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

  1. Установите соединение с компонентом Компонент Database Engine.

  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)

suspect_pages (Transact-SQL)

Основные понятия

Восстановление страниц (SQL Server)

MSSQLSERVER_823

MSSQLSERVER_824