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
убедитесь, что сервер не перегружен. - На рабочих системах запускайте такие команды вне пиковой нагрузки.