Управление таблицей 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
Таблица 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
В обозреватель объектов подключитесь к экземпляру ядро СУБД SQL Server, разверните этот экземпляр и разверните базы данных.
Разверните последовательно узлы Системные базы данных, msdb, Таблицыи Системные таблицы.
Разверните узел dbo.suspect_pages и щелкните правой кнопкой мыши Изменить 200 верхних строк.
В окне запроса измените, обновите или удалите необходимые строки.
Использование Transact-SQL
Управление таблицей suspect_pages
Соединитесь с ядром СУБД .
На панели «Стандартная» нажмите Создать запрос.
Скопируйте следующие примеры в окно запроса и нажмите кнопку Выполнить. В следующем примере продемонстрировано удаление некоторых строк из таблицы
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)