DBCC CHECKFILEGROUP (Transact-SQL)
Проверяет распределение и структурную целостность всех таблиц и индексированных представлений в указанной файловой группе текущей базы данных.
Синтаксис
DBCC CHECKFILEGROUP
[
[ ( { filegroup_name | filegroup_id | 0 }
[ , NOINDEX ]
) ]
[ WITH
{
[ ALL_ERRORMSGS | NO_INFOMSGS ]
[ , TABLOCK ]
[ , ESTIMATEONLY ]
[ , PHYSICAL_ONLY ]
}
]
]
Аргументы
filegroup_name
Имя файловой группы текущей базы данных, для которой производится проверка распределения и структурной целостности таблиц. Если не указано или равно 0, по умолчанию используется первичная файловая группа. Имена файловых групп должны соответствовать правилам для идентификаторов.Аргумент filegroup_name не может указывать на файловую группу FILESTREAM.
filegroup_id
Идентификатор файловой группы текущей базы данных, для которой производится проверка распределения и структурной целостности.NOINDEX
Указывает, что тщательную проверку некластеризованных индексов для пользовательских таблиц выполнять не следует. Это уменьшает общее время выполнения. Аргумент NOINDEX не оказывает влияния на системные таблицы, так как инструкция DBCC CHECKFILEGROUP всегда проверяет все индексы системных таблиц.ALL_ERRORMSGS
Отображает неограниченное число ошибок на каждый объект. В SQL Server 2008 с пакетом обновления 1 (SP1) все сообщения об ошибках выводятся по умолчанию. Указание или пропуск этого параметра не приводит к изменениям. В предыдущих версиях SQL Server (кроме SQL Server 2005 с пакетом обновления 3 (SP3)) отображаются только первые 200 сообщений об ошибке для каждого объекта, если не указан параметр ALL_ERRORMSGS.NO_INFOMSGS
Подавляет вывод всех информационных сообщений.TABLOCK
Заставляет инструкцию DBCC CHECKFILEGROUP устанавливать блокировку вместо использования внутреннего моментального снимка базы данных.ESTIMATEONLY
Отображает оценочный объем места в базе данных tempdb, необходимый для выполнения инструкции DBCC CHECKFILEGROUP со всеми остальными заданными параметрами.PHYSICAL_ONLY
Ограничивает область проверки целостностью физической структуры страниц, заголовков записей и физической структуры сбалансированных деревьев. Параметр предназначен для выполнения облегченной проверки физической согласованности файловой группы, а также может выявлять поврежденные страницы и общие сбои оборудования, которые могут нарушить целостность данных. Полное выполнение инструкции DBCC CHECKFILEGROUP может занять значительно больше времени, чем в предыдущих версиях. Это вызвано следующими причинами.Логические проверки стали более сложными.
Усложнился ряд базовых структур, нуждающихся в проверке.
Добавлено много новых проверок для поддержки новых функций.
Таким образом, применение параметра PHYSICAL_ONLY может значительно сократить время выполнения инструкции DBCC CHECKFILEGROUP для больших файловых групп, поэтому рекомендуется использовать его для частых проверок в рабочих системах. Также рекомендуется периодически производить полный запуск инструкции DBCC CHECKFILEGROUP. Периодичность запуска зависит от факторов, индивидуальных для каждого предприятия и каждой производственной среды. Аргумент PHYSICAL_ONLY всегда неявно включает аргумент NO_INFOMSGS и не должен указываться вместе с параметрами исправления ошибок.
Примечание Указание аргумента PHYSICAL_ONLY приводит к пропуску инструкцией DBCC CHECKFILEGROUP всех проверок данных FILESTREAM.
Замечания
Инструкции DBCC CHECKFILEGROUP и DBCC CHECKDB похожи. Основное отличие состоит в том, что инструкция DBCC CHECKFILEGROUP ограничена отдельной конкретной файловой группой и обязательными таблицами.
Инструкция DBCC CHECKFILEGROUP выполняет следующие команды.
Инструкцию DBCC CHECKALLOC для файловой группы.
Инструкцию DBCC CHECKTABLE для каждой таблицы и каждого индексированного представления в указанной файловой группе.
Запуск инструкций DBCC CHECKALLOC или DBCC CHECKTABLE отдельно от DBCC CHECKFILEGROUP не требуется.
Внутренней моментальный снимок базы данных
В инструкции DBCC CHECKFILEGROUP используется моментальный снимок внутренней базы данных для обеспечения согласованности транзакций, необходимой для выполнения таких проверок. Дополнительные сведения об этом см. в разделе Основные сведения о размере разреженных файлов в моментальных снимках базы данных и «Использование моментального снимка внутренней базы данных DBCC» в DBCC (Transact-SQL).
Если моментальный снимок создать невозможно или указан параметр TABLOCK, инструкция DBCC CHECKFILEGROUP устанавливает блокировки для получения необходимой согласованности. В таком случае для проверки выделенных ресурсов необходима монопольная блокировка базы данных, а для проверки таблиц — разделяемая блокировка таблицы. Аргумент TABLOCK позволяет быстрее выполнять инструкцию DBCC CHECKFILEGROUP в базе данных с большой загрузкой, но уменьшает уровень доступного параллелизма для базы данных во время запуска инструкции DBCC CHECKFILEGROUP.
Примечание |
---|
При выполнении инструкции DBCC CHECKFILEGROUP в базе данных tempdb не выполняется никакой проверки выделенных ресурсов, а для проверки таблиц необходимо получить совмещаемую блокировку таблицы. Это обусловлено тем, что по соображениям производительности моментальные снимки базы данных недоступны для базы данных tempdb. Это означает, что достичь необходимой согласованности транзакций нельзя. |
Проверка объектов в параллельном режиме
По умолчанию инструкция DBCC CHECKFILEGROUP выполняет параллельную проверку объектов. Степень параллелизма определяется автоматически обработчиком запросов. Максимальная степень параллелизма настраивается так же, как и в параллельных запросах. Чтобы ограничить максимальное число процессоров, доступных для проверки DBCC, используется процедура sp_configure. Дополнительные сведения см. в разделе Параметр max degree of parallelism.
Параллельную проверку можно отключить с помощью флага трассировки 2528. Дополнительные сведения см. в разделе Флаги трассировки (Transact-SQL).
Некластеризованные индексы для отдельных файловых групп
Если некластеризованный индекс в указанной файловой группе связан с таблицей в другой файловой группе, индекс не проверяется, так как базовая таблица не доступна для проверки. Это поведение изменено в SQL Server 2005. В предыдущих версиях SQL Server некластеризованный индекс и базовая таблица другой файловой группы подвергались проверке. Чтобы проверить как некластеризованные индексы, так и базовые таблицы, выполните инструкцию DBCC CHECKDB.
Если для таблицы из проверяемой файловой группы имеется некластеризованный индекс в другой файловой группе, этот индекс не проверяется по следующим причинам.
Структура базовой таблицы не зависит от структуры некластеризованного индекса. Для проверки базовой таблицы просмотр некластеризованных индексов не требуется.
Команда DBCC CHECKFILEGROUP проверяет объекты только в указанной файловой группе.
Кластеризованный индекс и таблица не могут принадлежать к различным файловым группам, поэтому предыдущие соображения применяются только к некластеризованным индексам.
Секционированные таблицы в отдельных файловых группах
В версиях SQL Server 2005 до версии с пакетом обновления 2 (SP2), команда DBCC CHECKFILEGROUP проверяет секционированную таблицу только в том случае, если вся таблица расположена в указанной файловой группе. Если таблица расположена в нескольких файловых группах, то она не обрабатывается. В версии с пакетом обновления 2 (SPЗ2) и более поздних, если секционированная таблица расположена в нескольких файловых группах, то команда DBCC CHECKFILEGROUP проверяет наборы строк секции, существующие в указанной файловой группе, и не обрабатывает наборы строк в других файловых группах. Информационное сообщение 2594 указывает непроверенные секции. Некластеризованные индексы, не расположенные в указанной файловой группе, не проверяются.
Основные сведения о сообщениях об ошибках DBCC
После завершения выполнения команды DBCC CHECKFILEGROUP в журнал ошибок SQL Server записывается сообщение. При успешном выполнении команды DBCC сообщается об успешном завершении и количестве времени, затраченном на выполнение команды. Если выполнение команды DBCC прерывается до завершения проверки по причине ошибки, сообщение указывает на прерывание команды и приводит значение состояния и количество времени, затраченного на выполнение команды. В следующей таблице перечислены и описаны значения состояний, которые могут быть включены в сообщение.
Состояние |
Описание |
---|---|
0 |
Возникла ошибка с номером 8930. Это указывает на повреждение метаданных, вызвавшее прекращение выполнения команды DBCC. |
1 |
Возникла ошибка с номером 8967. Внутренняя ошибка DBCC. |
2 |
При аварийном восстановлении базы данных произошла ошибка. |
3 |
Это указывает на повреждение метаданных, вызвавшее прекращение выполнения команды DBCC. |
4 |
Обнаружено нарушение доступа или утверждения. |
5 |
Возникла неизвестная ошибка, которая привела к прекращению выполнения команды DBCC. |
Отчет об ошибках
При каждом обнаружении командой DBCC CHECKFILEGROUP ошибки повреждения данных, в папке «LOG» SQL Server создается мини-файл дампа (SQLDUMPnnnn.txt). Если для экземпляра SQL Server включены функции сбора данных об использовании компонентов и отчетов об ошибках, этот файл автоматически отправляется корпорации Майкрософт. Собранные данные используются для улучшения функциональности SQL Server.
Файл дампа содержит результаты выполнения команды DBCC CHECKFILEGROUP и дополнительные диагностические сведения. Доступ к этому файлу ограничен списками управления доступом на уровне пользователей. Доступ ограничен учетной записью службы SQL Server и членами роли sysadmin. По умолчанию роль sysadmin содержит всех членов группы Windows BUILTIN\Администраторы и группы локальных администраторов. В случае ошибки процесса сбора данных команда DBCC не завершается ошибкой.
Разрешение ошибок
Если инструкцией DBCC CHECKFILEGROUP выдаются какие-либо ошибки, рекомендуется восстановить базу данных из резервной копии. Обратите внимание, что для инструкции DBCC CHECKFILEGROUP параметры восстановления указать нельзя.
В случае отсутствия резервных копий запуск инструкции DBCC CHECKDB с заданным аргументом восстановления позволяет исправить выдаваемые ошибки. Если выдаются ошибки, используемый аргумент восстановления указывается в конце списка. При исправлении ошибок с помощью аргумента REPAIR_ALLOW_DATA_LOSS может потребоваться удаление некоторых страниц, и, следовательно, данных.
Результирующие наборы
Инструкция DBCC CHECKFILEGROUP возвращает следующий результирующий набор (значения могут различаться):
кроме случаев, когда заданы параметры ESTIMATEONLY или NO_INFOMSGS;
для текущей базы данных, если база данных не указана, независимо от того, заданы ли какие-либо аргументы (кроме NOINDEX).
DBCC results for 'master'.
DBCC results for 'sys.sysrowsetcolumns'.
There are 630 rows in 7 pages for object 'sys.sysrowsetcolumns'.
DBCC results for 'sys.sysrowsets'.
There are 97 rows in 1 pages for object 'sys.sysrowsets'.
DBCC results for 'sysallocunits'.
There are 195 rows in 3 pages for object 'sysallocunits'.
There are 2340 rows in 16 pages for object 'spt_values'.
DBCC results for 'MSreplication_options'.
There are 2 rows in 1 pages for object 'MSreplication_options'.
CHECKFILEGROUP found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Если задан аргумент NO_INFOMSGS, инструкция DBCC CHECKFILEGROUP возвращает:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Если задан аргумент ESTIMATEONLY, инструкция DBCC CHECKFILEGROUP возвращает следующее (значения могут различаться):
Estimated TEMPDB space needed for CHECKALLOC (KB)
-------------------------------------------------
15
(1 row(s) affected)
Estimated TEMPDB space needed for CHECKTABLES (KB)
--------------------------------------------------
207
(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Разрешения
Необходимо членство в предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner.
Примеры
A. Проверка файловой группы PRIMARY базы данных AdventureWorks
В следующем примере выполняется проверка первичной файловой группы базы данных AdventureWorks.
USE AdventureWorks;
GO
DBCC CHECKFILEGROUP;
GO
Б. Проверка первичной файловой группы (PRIMARY) базы данных AdventureWorks без некластеризованных индексов
В следующем примере выполняется проверка первичной файловой группы базы данных AdventureWorks (за исключением некластеризованных индексов) путем указания идентификационного номера первичной файловой группы, а также параметра NOINDEX.
USE AdventureWorks;
GO
DBCC CHECKFILEGROUP (1, NOINDEX);
GO
В. Проверка файловой группы PRIMARY с параметрами
В следующем примере выполняется проверка первичной файловой группы базы данных master с указанием параметра ESTIMATEONLY.
USE master;
GO
DBCC CHECKFILEGROUP (1)
WITH ESTIMATEONLY;
См. также
Справочник
Журнал изменений
Обновленное содержимое |
---|
В определении ALL_ERRORMSGS описываются новые функции в SQL Server 2008 с пакетом обновления 1 (SP1). |
Добавлено предложение PHYSICAL_ONLY в разделы «Синтаксис» и «Аргументы». |