Skip to content

DBCC

Команда DBCC в SQL Server означает "Database Console Commands", и используется для диагностики, проверки, обслуживания и настройки баз данных.


🔍 Основные категории команд DBCC

1. Проверка целостности базы данных

Наиболее часто используемая команда:

DBCC CHECKDB ('имя_базы') WITH NO_INFOMSGS, ALL_ERRORMSGS;
  • Проверяет логическую и физическую целостность всех объектов в указанной базе данных.
  • Рекомендуется запускать регулярно (например, в рамках плана обслуживания).

Другие подобные команды:

  • DBCC CHECKTABLE('имя_таблицы') — проверяет отдельную таблицу.
  • DBCC CHECKALLOC — проверяет правильность распределения страниц.
  • DBCC CHECKCATALOG — проверяет системные каталоги.

2. Очистка кэша

DBCC DROPCLEANBUFFERS;
  • Очищает буферный пул (только данные). Полезно при тестировании производительности запросов.
DBCC FREEPROCCACHE;
  • Удаляет все планы выполнения из кэша.
DBCC FREESYSTEMCACHE ('ALL');
  • Очищает системные кэши.

⚠️ Используйте с осторожностью на боевых серверах — может временно ухудшить производительность.


3. Информационные команды

DBCC OPENTRAN ('имя_базы');
  • Показывает информацию о самых старых активных транзакциях.
DBCC LOGINFO;
  • Показывает содержимое транзакционного лога текущей БД.
DBCC SHOWCONTIG ('имя_таблицы');
  • Показывает уровень фрагментации таблицы или индекса.

4. Разное

DBCC SHRINKDATABASE ('имя_базы');
  • Сжимает размер БД. Не рекомендуется использовать без необходимости.
DBCC TRACEON (3604);
  • Включает трассировку (например, вывод результата DBCC PAGE).
DBCC PAGE ('имя_базы', файл_id, page_id, уровень_вывода);
  • Позволяет просмотреть содержимое конкретной страницы данных (используется в диагностике).

🛠 Пример: Проверка целостности всей базы

USE master;
GO
DBCC CHECKDB ('AdventureWorks2022') WITH NO_INFOMSGS, ALL_ERRORMSGS;

Если ошибок нет — выведет только статистику. Если есть повреждения — покажет их описание.


📌 Когда использовать?

Задача Команда
Диагностика повреждений DBCC CHECKDB
Очистка кэша перед тестами DBCC DROPCLEANBUFFERS, FREEPROCCACHE
Проверка фрагментации DBCC SHOWCONTIG
Проверка открытых транзакций DBCC OPENTRAN

❗ Важно помнить:

  • Некоторые команды блокируют операции или требуют времени.
  • Не используйте SHRINK без необходимости — это может привести к фрагментации.
  • Перед запуском CHECKDB убедитесь, что сервер не перегружен.
  • На рабочих системах запускайте такие команды вне пиковой нагрузки.