Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Изменения: 5 декабря 2005 г.
SQL Server 2005 хранит сведения о подозрительных страницах в таблице suspect_pages базы данных msdb каждого экземпляра сервера. Эта таблица используется при принятии решений о необходимости восстановления.
Считав страницу базы данных, содержащую ошибку 824 (см. таблицу ниже), компонент SQL Server Database Engine считает ее «подозрительной» и записывает ее идентификатор в таблицу suspect_pages. В эту таблицу записываются все подозрительные страницы, которые встретились при обработке, в частности:
- При обработке запроса необходимо считать страницу.
- При выполнении инструкции DBCC CHECKDB.
- Во время операции резервного копирования.
Во время операции восстановления, исправления DBCC или операции удаления базы данных в случае необходимости также обновляется таблица suspect_pages.
Ошибки, заносящиеся в таблицу suspect_pages
Таблица suspect_pages содержит по одной строке на каждую страницу, в которой обнаружена ошибка с номером 824, но не более 1 000 строк. В столбец event_type таблицы suspect_pages заносятся следующие ошибки с кодом 824.
| Описание ошибки | Значение event_type |
|---|---|
Ошибки с номером 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
Следующие действия автоматически удаляют строки из таблицы suspect_pages:
- ALTER DATABASE REMOVE FILE
- DROP DATABASE
- DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS обновляет таблицу suspect_pages, отмечая освобождение или исправление каждой страницы.
- RESTORE также обновляет список. Операции полного восстановления, восстановления файла или страницы помечают записи для страниц как восстановленные.
Задачи обслуживания, выполняемые администратором базы данных
За обслуживание таблицы, преимущественно за удаление старых строк, отвечают администраторы базы данных. Размер таблицы suspect_pages ограничен, поэтому после того, как она заполнена, новые ошибки в нее не заносятся. Как только таблица достигает предельного размера, администратор базы данных или системный администратор должен вручную удалить из нее старые строки. Пока это не сделано, новые записи в таблицу не заносятся.
Администратор базы данных может также вставлять или обновлять записи. Например, обновление строк может оказаться полезным, если администратор базы данных знает, что какая-нибудь из сомнительных страниц на самом деле исправна, но хочет на время сохранить соответствующую запись.
Примеры
В следующем примере из таблицы suspect_pages удаляется несколько строк.
-- Select 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)