DBCC (Transact-SQL)

Применимо к:база данныхSQL Server Azure SQL Управляемый экземпляр SQL Azure

Язык Transact-SQL предоставляет инструкции DBCC, которые выступают в качестве консольных команд базы данных для SQL Server.

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

Категория команды Выполнение
Обслуживание Обслуживание задач в базе данных, индексе или в файловой группе.
Разное Вспомогательные задачи, например установка флага трассировки или удаление из памяти библиотеки DLL.
Informational Задачи, собирающие и отображающие разные типы сведений.
Проверка Проверочные операции в базе данных, таблице, индексе, каталоге, в файловой группе или распределение страниц базы данных.

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

Использование внутренней базы данных DBCC snapshot

Следующие команды DBCC выполняют операции с внутренним моментальным снимком базы данных, предназначенным только для чтения, который создает компонент Компонент Database Engine. Snapshot предотвращает проблемы блокировки и параллелизма при выполнении этих команд. Дополнительные сведения см. в разделе Моментальные снимки базы данных (SQL Server).

  • DBCC CHECKALLOC
  • DBCC CHECKCATALOG
  • DBCC CHECKDB
  • DBCC CHECKFILEGROUP
  • DBCC CHECKTABLE

При выполнении одной из этих команд DBCC компонент Компонент Database Engine создает моментальный снимок базы данных и приводит ее в согласованное состояние на уровне транзакций. Затем команда DBCC выполняет проверку этого моментального снимка. После завершения команды DBCC этот моментальный снимок удаляется.

Иногда внутренняя база данных snapshot не требуется или не может быть создана. В этом случае команда DBCC выполняется в отношении реальной базы данных. Если база данных находится в режиме в сети, команда DBCC использует блокировку таблиц для обеспечения согласованности проверяемых объектов. Это поведение такое же, как и при указании WITH TABLOCK параметра.

Внутренняя snapshot базы данных не создается при выполнении команды DBCC:

  • master Для базы данных и экземпляр SQL Server работает в однопользовательском режиме.
  • Для базы данных, отличной от master, но база данных была помещена в однопользовательский режим с помощью инструкции ALTER DATABASE .
  • в базе данных, предназначенной только для чтения;
  • Для базы данных, которая была настроена в аварийном режиме с помощью инструкции ALTER DATABASE .
  • Против tempdb. В этом случае невозможно создать базу данных snapshot из-за внутренних ограничений.
  • WITH TABLOCK С помощью параметра . В этом случае команда DBCC соблюдает ограничение запроса и не создает моментальный снимок.

Команды DBCC используют блокировки таблиц, а не внутренние моментальные снимки базы данных, если выполняются:

  • в файловой группе, предназначенной только для чтения;
  • Файловая система FAT
  • Том, который не поддерживает именованные потоки
  • Том, который не поддерживает альтернативные потоки

Примечание

При попытке запустить DBCC CHECKALLOCили эквивалентную часть DBCC CHECKDBс помощью WITH TABLOCK параметра требуется монопольная блокировка базы данных (X). Эта блокировка базы данных не может быть установлена в tempdb или и master , вероятно, завершится ошибкой во всех других базах данных.

Примечание

DBCC CHECKDBпроисходит сбой при выполнении master в , если не удается создать внутреннюю базу данных snapshot.

Отчеты о ходе выполнения команд DBCC

Представление sys.dm_exec_requests каталога содержит сведения о ходе выполнения и текущем этапе выполнения DBCC CHECKDBкоманд , CHECKFILEGROUPи CHECKTABLE . Столбец percent_complete указывает процент выполнения команды, а столбец command сообщает о текущем этапе выполнения команды.

Определение единицы хода выполнения зависит от текущего этапа выполнения команды DBCC. Иногда отчет о состоянии формируется на уровне гранулярности страницы базы данных, на других этапах — на уровне гранулярности одной базы данных или исправления распределения пространства. В следующей таблице представлены все этапы выполнения и уровень гранулярности, на котором команда формирует отчет о состоянии.

Этап выполнения Описание Уровень гранулярности отчетов о состоянии
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 Во время этого этапа проверяется логическая согласованность всех индексированных представлений базы данных. Отчет о состоянии сформирован на уровне отдельных представлений баз данных.

Информационные инструкции

Инструкции проверки

Инструкции по обслуживанию

Прочие инструкции