DBCC CHECKFILEGROUP (Transact-SQL)

Изменения: 17 ноября 2008 г.

Проверяет распределение и структурную целостность всех таблиц и индексированных представлений в указанной файловой группе текущей базы данных.

Значок ссылки на разделСоглашения о синтаксическом обозначении в Transact-SQL

Синтаксис

DBCC CHECKFILEGROUP 
[
    [ ( { filegroup | filegroup_id | 0 } 
        [ , NOINDEX ] 
    ) ]
    [ WITH 
        { 
            [ ALL_ERRORMSGS | NO_INFOMSGS ] 
            [ , TABLOCK ] 
            [ , ESTIMATEONLY ]
            [ , PHYSICAL_ONLY ]  
        } 
    ]
]

Аргументы

  • filegroup_name
    Имя файловой группы текущей базы данных, для которой производится проверка распределения и структурной целостности таблиц. Если не указано или равно 0, по умолчанию используется первичная файловая группа. Имена файловых групп должны соответствовать правилам для идентификаторов.
  • filegroup_id
    Идентификатор файловой группы текущей базы данных, для которой производится проверка распределения и структурной целостности.
  • NOINDEX
    Указывает, что тщательную проверку некластеризованных индексов для пользовательских таблиц выполнять не следует. Это уменьшает общее время выполнения. Аргумент NOINDEX не оказывает влияния на системные таблицы, так как инструкция DBCC CHECKFILEGROUP всегда проверяет все индексы системных таблиц.
  • ALL_ERRORMSGS
    Отображает неограниченное число ошибок на каждый объект. В SQL Server 2005 с пакетом обновления 3 (SP3) по умолчанию отображаются все сообщения об ошибках. Указание или пропуск этого параметра не имеют значения. В более ранних версиях SQL Server, если аргумент ALL_ERRORMSGS не указан, будут отображаться лишь первые 200 сообщений об ошибках для каждого объекта.
  • NO_INFOMSGS
    Подавляет вывод всех информационных сообщений.
  • TABLOCK
    Заставляет инструкцию DBCC CHECKFILEGROUP устанавливать блокировку вместо использования внутреннего моментального снимка базы данных.
  • ESTIMATE ONLY
    Отображает оценочный объем места в базе данных tempdb, необходимый для запуска инструкции DBCC CHECKFILEGROUP со всеми остальными заданными параметрами.
  • PHYSICAL_ONLY
    Ограничивает область проверки целостностью физической структуры страниц, заголовков записей и физической структуры сбалансированных деревьев. Параметр предназначен для выполнения облегченной проверки физической согласованности файловой группы, а также может выявлять поврежденные страницы и общие сбои оборудования, которые могут нарушить целостность данных. Полное выполнение инструкции DBCC CHECKFILEGROUP может занять значительно больше времени, чем в предыдущих версиях. Это вызвано следующими причинами.

    • Логические проверки стали более сложными.
    • Усложнился ряд базовых структур, нуждающихся в проверке.
    • Добавлено много новых проверок для поддержки новых функций.

    Таким образом, применение параметра PHYSICAL_ONLY может значительно сократить время выполнения инструкции DBCC CHECKFILEGROUP для больших файловых групп, поэтому рекомендуется использовать его для частых проверок в рабочих системах. Также рекомендуется периодически производить полный запуск инструкции DBCC CHECKFILEGROUP. Периодичность запуска зависит от факторов, индивидуальных для каждого предприятия и каждой производственной среды. Аргумент PHYSICAL_ONLY всегда неявно включает аргумент NO_INFOMSGS и не должен указываться вместе с параметрами исправления ошибок.

    Примечание.   Указание аргумента PHYSICAL_ONLY приводит к пропуску инструкцией DBCC CHECKFILEGROUP всех проверок данных FILESTREAM.

Результирующие наборы

Инструкция 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.

Замечания

Инструкции 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.

ms187332.note(ru-ru,SQL.90).gifПримечание.
В SQL Server 2005 при запуске инструкции 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 (SP2), если секционированная таблица расположена в нескольких файловых группах, то команда DBCC CHECKFILEGROUP проверяет наборы строк секции, существующей в указанной файловой группе, и не обрабатывает наборы строк в других файловых группах. Информационное сообщение 2594 указывает непроверенные секции. Некластеризованные индексы, не расположенные в указанной файловой группе, не проверяются.

Основные сведения о сообщениях об ошибках DBCC

После завершения выполнения команды DBCC CHECKFILEGROUP в журнал ошибок SQL Server записывается сообщение. При успешном выполнении команды DBCC сообщается об успешном завершении и количестве времени, затраченном на выполнение команды. Если выполнение команды DBCC прерывается до завершения проверки по причине ошибки, сообщение указывает на прерывание команды и приводит значение состояния и количество времени, затраченного на выполнение команды. В следующей таблице перечислены и описаны значения состояний, которые могут быть включены в сообщение.

Штат Описание

0

Возникла ошибка с номером 8930. Указывает на повреждение метаданных, вызвавшее прекращение выполнения команды DBCC.

1

Возникла ошибка с номером 8967. Внутренняя ошибка DBCC.

2

Произошла ошибка при аварийном восстановлении базы данных.

3

Указывает на повреждение метаданных, вызвавшее прекращение выполнения команды DBCC.

4

Обнаружено нарушение доступа или утверждения.

5

Возникла неизвестная ошибка, которая привела к прекращению выполнения команды DBCC.

Отчет об ошибках

В SQL Server 2005 с пакетом обновления 1 (SP1) при обнаружении командой 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 может потребоваться удаление некоторых страниц, и, следовательно, данных.

Разрешения

Необходимо членство в фиксированной серверной роли 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;

См. также

Справочник

DBCC (Transact-SQL)
FILEGROUP_ID (Transact-SQL)
sp_helpfile (Transact-SQL)
sp_helpfilegroup (Transact-SQL)
Представление совместимости sys.sysfiles (Transact-SQL)
DBCC CHECKDB (Transact-SQL)
DBCC CHECKALLOC (Transact-SQL)
DBCC CHECKTABLE (Transact-SQL)

Другие ресурсы

Физическая архитектура базы данных

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

17 ноября 2008 г.

Добавления
  • В определении ALL_ERRORMSGS описаны новые функции в пакете обновления 3 (SP3).

12 декабря 2006 г.

Добавления
  • В раздел «Примечания» добавлен подраздел «Секционированные таблицы в файловых группах». В этом разделе описаны новые функциональные возможности версии с пакетом обновления 2 (SP2).

14 апреля 2006 г.

Добавления
  • В раздел «Примечания» добавлен подраздел «Отчет об ошибках». В этом разделе описаны новые функциональные возможности пакета обновления 1(SP1).

5 декабря 2005 г.

Добавления
  • Добавлен пример В.
Изменения
  • Исправлен синтаксис.
  • В раздел «Примечания» добавлены сведения о сообщениях, записываемых в журнал ошибок SQL Server, и описания значений состояния.
  • В разделе «Примечания» исправлены сведения о некластеризованных индексах на отдельных файловых группах для отражения поведения SQL Server 2005.