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