DBCC CHECKFILEGROUP (Transact-SQL)

Применяется к:SQL ServerAzure SQL DatabaseAzure, управляемому экземпляру SQL Azure

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

DBCC CHECKFILEGROUP
[
    [ ( { filegroup_name | filegroup_id | 0 }
        [ , NOINDEX ]
  ) ]
    [ WITH
        {
            [ ALL_ERRORMSGS | NO_INFOMSGS ]
            [ , TABLOCK ]
            [ , ESTIMATEONLY ]
            [ , PHYSICAL_ONLY ]
            [ , MAXDOP  = number_of_processors ]
        }
    ]
]

Заметка

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

filegroup_name

Имя файловой группы в текущей базе данных, для которой необходимо проверить выделение таблиц и структурную целостность. Если не указано или равно 0, по умолчанию используется первичная файловая группа. Имена файловых групп должны соответствовать правилам для идентификаторов.
filegroup_name не может быть файловой группой FILESTREAM.

filegroup_id

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

NOINDEX

Указывает, что не следует выполнять интенсивные проверки некластеризованных индексов для пользовательских таблиц. Это уменьшает общее время выполнения. NOINDEX не влияет на системные таблицы, так как DBCC CHECKFILEGROUP всегда проверяет все индексы системных таблиц.

ALL_ERRORMSGS

Отображает неограниченное число ошибок на каждый объект. Все сообщения об ошибках выводятся по умолчанию. Указание или пропуск этого параметра не приводит к изменениям.

NO_INFOMSGS

Подавляет вывод всех информационных сообщений.

TABLOCK

Причины DBCC CHECKFILEGROUP получения блокировок вместо использования внутреннего моментального снимка базы данных.

ESTIMATE ONLY

Отображает предполагаемое количество места, необходимого tempdb для выполнения DBCC CHECKFILEGROUP со всеми другими указанными параметрами.

PHYSICAL_ONLY

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

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

Заметка

В документации по SQL Server термин "сбалансированное дерево" обычно используется в отношении индексов. В индексах rowstore SQL Server реализует B+-дерево. Это не относится к индексам columnstore или хранилищам данных в памяти. Дополнительные сведения см. в руководстве по архитектуре и проектированию индексов SQL Sql Server и Azure.

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

Заметка

Указание PHYSICAL_ONLY причин DBCC CHECKFILEGROUP пропуска всех проверок данных FILESTREAM.

MAXDOP

Область применения: SQL Server 2014 с пакетом обновления 2 и более поздних версий

Переопределяет параметр sp_configure конфигурации максимальной степени параллелизма для инструкции. Значение MAXDOP может превышать значение, настроенное с sp_configureпомощью . Если MAXDOP превышено значение, настроенное с помощью регулятора ресурсов, ядро СУБД использует значение регулятора MAXDOP ресурсов, описанное в инструкции ALTER WORKLOAD GROUP (Transact-SQL). Все семантические правила, используемые с параметром конфигурации максимальной степени параллелизма, применимы при использовании MAXDOP указания запроса. Дополнительные сведения см. в разделе Настройка параметра конфигурации сервера max degree of parallelism.

Внимание

Если MAXDOP задано равно нулю, сервер выбирает максимальную степень параллелизма.

Замечания

DBCC CHECKFILEGROUP и DBCC CHECKDB аналогичны команды DBCC. Основное различие заключается в том, что DBCC CHECKFILEGROUP она ограничена одной указанной файловой группой и необходимыми таблицами.

DBCC CHECKFILEGROUP выполняет следующие команды:

  • инструкцию DBCC CHECKALLOC для файловой группы;
  • инструкцию DBCC CHECKTABLE для каждой таблицы и каждого индексированного представления в указанной файловой группе.

Выполнение DBCC CHECKALLOC или DBCC CHECKTABLE отдельно DBCC CHECKFILEGROUP не требуется.

Внутренний моментальный снимок базы данных

DBCC CHECKFILEGROUP использует внутренний моментальный снимок базы данных для обеспечения согласованности транзакций, который должен выполнять эти проверки. Дополнительные сведения см. в разделе "Размер разреженного файла моментального снимка базы данных" (Transact-SQL) и раздела об использовании внутреннего моментального снимка базы данных 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).

Некластеризованные индексы в отдельных файловых группах

Если некластеризованный индекс в указанной файловой группе связан с таблицей в другой файловой группе, индекс не проверяется, так как базовая таблица недоступна для проверки.

Если таблица в указанной файловой группе содержит некластеризованный индекс в другой файловой группе, некластеризованный индекс не проверяется из-за следующего:

  • Базовая структура таблицы не зависит от структуры некластеризованного индекса. Некластеризованные индексы не нужно проверять для проверки базовой таблицы.
  • Команда DBCC CHECKFILEGROUP проверяет объекты только в указанной файловой группе.

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

Секционированные таблицы в отдельных файловых группах

Если секционированная таблица существует в нескольких файловых группах, DBCC CHECKFILEGROUP проверяет наборы строк секции, существующие в указанной файловой группе, и игнорирует наборы строк в других файловых группах. Информационное сообщение 2594 указывает на разделы, которые не были проверены. Некластеризованные индексы, не проживающие в указанной файловой группе, не проверяются.

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

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

State Описание:
0 Возникла ошибка с номером 8930. Это указывает на повреждение метаданных, вызвавшее прекращение выполнения команды DBCC.
1 Возникла ошибка с номером 8967. Внутренняя ошибка DBCC.
2 При аварийном восстановлении базы данных произошла ошибка.
3 Это указывает на повреждение метаданных, вызвавшее прекращение выполнения команды DBCC.
4 Обнаружено нарушение доступа или утверждения.
5 Возникла неизвестная ошибка, которая привела к прекращению выполнения команды DBCC.

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

Файл мини-дампа (SQLDUMP<nnnn>.txt) создается в каталоге SQL Server LOG при обнаружении DBCC CHECKFILEGROUP ошибки повреждения. Если для экземпляра SQL Server включены сбор данных об использовании компонентов и функции отчетов об ошибках, файл автоматически перенаправляются в корпорацию Майкрософт. Собранные данные используются для улучшения функциональности SQL Server.

Файл дампа содержит результаты DBCC CHECKFILEGROUP команды и дополнительные диагностические выходные данные. Доступ к этому файлу ограничен списками управления доступом на уровне пользователей. Доступ ограничен учетной записью службы SQL Server и членами роли sysadmin . По умолчанию роль sysadmin содержит всех членов группы Windows BUILTIN\Administrators и группы локальных администраторов. Команда 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 .

Примеры

О. Проверка файловой группы PRIMARY в базе данных

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

DBCC CHECKFILEGROUP;
GO

B. Проверка файловой группы AdventureWorks PRIMARY без некластеризованных индексов

В приведенном ниже примере выполняется проверка первичной файловой группы базы данных AdventureWorks2022 (за исключением некластеризованных индексов) путем указания идентификационного номера первичной файловой группы, а также параметра NOINDEX.

USE AdventureWorks2022;
GO
DBCC CHECKFILEGROUP (1, NOINDEX);
GO

C. Проверьте файловую группу PRIMARY с параметрами

В следующем примере выполняется проверка первичной файловой группы базы данных master с указанием параметра ESTIMATEONLY.

USE master;
GO
DBCC CHECKFILEGROUP (1)
WITH ESTIMATEONLY;

См. также