DBCC (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Язык Transact-SQL предоставляет инструкции DBCC, которые выступают в качестве консольных команд базы данных для SQL Server.
Инструкции консольных команд базы данных группируются по следующим категориям.
Категория команды | Выполнение |
---|---|
Обслуживание | Обслуживание задач в базе данных, индексе или в файловой группе. |
Прочие условия | Вспомогательные задачи, например установка флага трассировки или удаление из памяти библиотеки DLL. |
Информационный | Задачи, собирающие и отображающие разные типы сведений. |
Проверка | Проверочные операции в базе данных, таблице, индексе, каталоге, в файловой группе или распределение страниц базы данных. |
Команды DBCC принимают входные параметры и возвращают значения. Все команды DBCC могут принимать в качестве параметров как литералы в Юникоде, так и литералы в двухбайтовой кодировке.
Использование внутреннего моментального снимка базы данных DBCC
Следующие команды DBCC работают с моментальным снимком базы данных только для чтения, создаваемым ядро СУБД. Моментальный снимок предотвращает блокировку и проблемы параллелизма при выполнении этих команд. Дополнительные сведения см. в разделе Моментальные снимки базы данных (SQL Server).
DBCC CHECKALLOC
DBCC CHECKCATALOG
DBCC CHECKDB
DBCC CHECKFILEGROUP
DBCC CHECKTABLE
При выполнении одной из этих команд DBCC ядро СУБД создает моментальный снимок базы данных и переносит его в согласованное с транзакцией состояние. Затем команда DBCC выполняет проверку этого моментального снимка. После завершения команды DBCC этот моментальный снимок удаляется.
Иногда внутренний моментальный снимок базы данных не требуется или не может быть создан. В этом случае команда DBCC выполняется в отношении реальной базы данных. Если база данных находится в режиме в сети, команда DBCC использует блокировку таблиц для обеспечения согласованности проверяемых объектов. Это поведение совпадает с заданным параметром WITH TABLOCK
.
Внутренний моментальный снимок базы данных не создается при выполнении команды DBCC:
master
В базе данных и экземпляре SQL Server выполняется в однопользовательском режиме.- Для базы данных, отличной от
master
базы данных, но база данных была помещена в однопользовательском режиме с помощью инструкцииALTER DATABASE
. - в базе данных, предназначенной только для чтения;
- Для базы данных, настроенной в режиме экстренного реагирования, с помощью инструкции
ALTER DATABASE
. - Против
tempdb
. В этом случае моментальный снимок базы данных не может быть создан из-за внутренних ограничений. WITH TABLOCK
Использование параметра. В этом случае команда DBCC соблюдает ограничение запроса и не создает моментальный снимок.
Команды DBCC используют блокировки таблиц, а не внутренние моментальные снимки базы данных, если выполняются:
- в файловой группе, предназначенной только для чтения;
- Файловая система FAT
- Том, который не поддерживает именованные потоки
- Том, который не поддерживает альтернативные потоки
Примечание.
При попытке запустить DBCC CHECKALLOC
или эквивалентную часть DBCC CHECKDB
, используя WITH TABLOCK
параметр, требуется блокировка базы данных, исключающая (X
). Эта блокировка базы данных не может быть включена tempdb
или master
, вероятно, завершится сбоем во всех других базах данных.
Примечание.
DBCC CHECKDB
завершается master
ошибкой, если не удается создать внутренний моментальный снимок базы данных.
Отчеты о ходе выполнения команд DBCC
Представление sys.dm_exec_requests
каталога содержит сведения о ходе выполнения и текущем этапе выполнения DBCC CHECKDB
CHECKFILEGROUP
команд и CHECKTABLE
команд. Столбец percent_complete
указывает процент выполнения команды, а command
столбец сообщает о текущем этапе выполнения команды.
Определение единицы хода выполнения зависит от текущего этапа выполнения команды DBCC. Иногда отчет о состоянии формируется на уровне гранулярности страницы базы данных, на других этапах — на уровне гранулярности одной базы данных или исправления распределения пространства. В следующей таблице представлены все этапы выполнения и уровень гранулярности, на котором команда формирует отчет о состоянии.
Этап выполнения | Description | Уровень гранулярности отчетов о состоянии |
---|---|---|
DBCC TABLE CHECK |
Во время этого этапа проверяется логическая и физическая согласованность объектов в базе данных. | Отчет о состоянии сформирован на уровне страниц базы данных. Значение отчета о состоянии обновляется через каждые 1000 проверенных страниц базы данных. |
DBCC TABLE REPAIR |
Восстановление базы данных выполняется на этом этапе, если REPAIR_FAST REPAIR_REBUILD ( или REPAIR_ALLOW_DATA_LOSS указано) и возникают ошибки объектов, которые должны быть исправлены. |
Отчет о состоянии сформирован на уровне отдельных исправлений. Счетчик обновляется для каждой завершенной операции исправления. |
DBCC ALLOC CHECK |
Во время этого этапа проверяются структуры распределения. Примечание. DBCC CHECKALLOC Выполняет те же проверки. |
Ход выполнения не сообщается |
DBCC ALLOC REPAIR |
Восстановление базы данных выполняется на этом этапе, если REPAIR_FAST REPAIR_REBUILD задано или REPAIR_ALLOW_DATA_LOSS указано, а также возникают ошибки выделения, которые должны быть исправлены. |
Ход выполнения не сообщается. |
DBCC SYS CHECK |
Во время этого этапа проверяются системные таблицы базы данных. | Отчет о состоянии сформирован на уровне страниц базы данных. Значение отчета о состоянии обновляется через каждую 1 000 проверенных страниц базы данных. |
DBCC SYS REPAIR |
Восстановление базы данных выполняется на этом этапе, если REPAIR_FAST REPAIR_REBUILD задано или REPAIR_ALLOW_DATA_LOSS указано, и возникают системные ошибки таблицы, которые должны быть исправлены. |
Отчет о состоянии сформирован на уровне отдельных исправлений. Счетчик обновляется для каждой завершенной операции исправления. |
DBCC SSB CHECK |
Объекты SQL Server Service Broker проверяются на этом этапе. Примечание. Этот этап не выполняется при DBCC CHECKTABLE выполнении. |
Ход выполнения не сообщается. |
DBCC CHECKCATALOG |
На этом этапе проверяется согласованность каталогов баз данных. Примечание. Этот этап не выполняется при DBCC CHECKTABLE выполнении. |
Ход выполнения не сообщается. |
DBCC IVIEW CHECK |
Во время этого этапа проверяется логическая согласованность всех индексированных представлений базы данных. | Отчет о состоянии сформирован на уровне отдельных представлений баз данных. |
Информационные инструкции
- DBCC INPUTBUFFER
- DBCC SHOWCONTIG
- DBCC OPENTRAN
- DBCC OUTPUTBUFFER
- DBCC PROCCACHE
- DBCC SHOW_STATISTICS
- DBCC SQLPERF
- DBCC TRACESTATUS
- DBCC USEROPTIONS
Инструкции проверки
- DBCC CHECKALLOC
- DBCC CHECKCATALOG
- DBCC CHECKCONSTRAINTS
- DBCC CHECKDB
- DBCC CHECKFILEGROUP
- DBCC CHECKIDENT
- DBCC CHECKTABLE
Инструкции по обслуживанию
- DBCC CLEANTABLE
- DBCC DBREINDEX
- DBCC DROPCLEANBUFFERS
- DBCC FREEPROCCACHE
- DBCC INDEXDEFRAG
- DBCC SHRINKDATABASE
- DBCC SHRINKFILE
- DBCC UPDATEUSAGE
Прочие инструкции
- DBCC dllname (FREE)
- DBCC HELP
- DBCC FLUSHAUTHCACHE
- DBCC TRACEOFF
- DBCC FREESESSIONCACHE
- DBCC TRACEON
- DBCC FREESYSTEMCACHE
- DBCC CLONEDATABASE (применимо к: SQL Server 2014 (12.x) с пакетом обновления 2 и более поздними версиями.)