DBCC (Database Console Commands) — это специальные команды SQL Server для администрирования, диагностики и обслуживания баз данных. Эти команды предоставляют DBA мощные инструменты для работы с внутренними структурами СУБД.
-- Проверка целостности всей базы данных
DBCC CHECKDB('AdventureWorks') WITH NO_INFOMSGS;
-- Проверка конкретной таблицы
DBCC CHECKTABLE('Sales.SalesOrderHeader');
-- Проверка индексов
DBCC CHECKALLOC('AdventureWorks');
-- Реорганизация индекса
DBCC INDEXDEFRAG('AdventureWorks', 'HumanResources.Employee', PK_Employee_BusinessEntityID);
-- Перестроение индекса
DBCC DBREINDEX('Sales.SalesOrderDetail', PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID);
-- Очистка кэша
DBCC FREEPROCCACHE;
DBCC DROPCLEANBUFFERS;
-- Показать статистику использования памяти
DBCC MEMORYSTATUS;
-- Информация о файлах БД
DBCC SHOWFILESTATS;
-- Показать параметры трассировки
DBCC TRACESTATUS;
-- Проверка использования страниц
DBCC IND('AdventureWorks', 'Sales.SalesOrderHeader', -1);
-- Дамп страницы
DBCC PAGE('AdventureWorks', 1, 12345, 3);
-- Проверка блокировок
DBCC TRACEON(1222, -1); -- Включить логирование деадлоков
-- Проверка БД на ошибки
DBCC CHECKDB('CorruptedDB') WITH ALL_ERRORMSGS, NO_INFOMSGS;
-- Экстренное восстановление (если другие методы не работают)
DBCC CHECKDB('CorruptedDB', REPAIR_ALLOW_DATA_LOSS);
Внимание: REPAIR_ALLOW_DATA_LOSS может привести к потере данных!
-- Очистка кэша перед тестированием
DBCC FREEPROCCACHE;
DBCC DROPCLEANBUFFERS;
-- Запуск тестового запроса
SELECT * FROM LargeTable WHERE ...;
-- Просмотр статистик
DBCC SHOW_STATISTICS('LargeTable', 'IX_LargeTable_Column');
Для выполнения большинства команд DBCC требуются:
Резюмируем: DBCC предоставляет администратору SQL Server мощный набор команд для обслуживания, диагностики и решения проблем. Эти команды работают на низком уровне с внутренними структурами СУБД и должны использоваться с пониманием их воздействия на систему. Для production-окружения особенно важно соблюдать осторожность с командами, изменяющими данные или структуры.