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;