DBCC CHECKALLOC (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Проверяет согласованность структур выделения места на диске для указанной базы данных.
Соглашения о синтаксисе Transact-SQL
Синтаксис
DBCC CHECKALLOC
[
( database_name | database_id | 0
[ , NOINDEX
| , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]
)
[ WITH
{
[ ALL_ERRORMSGS ]
[ , NO_INFOMSGS ]
[ , TABLOCK ]
[ , ESTIMATEONLY ]
}
]
]
Аргументы
database_name | database_id | 0
Имя или идентификатор базы данных, для которой выполняется проверка выделения и использования страниц.
Если значение не указано или указано значение 0, используется текущая база данных.
Имена баз данных должны соответствовать правилам построения идентификаторов.
NOINDEX
Указывает, что некластеризованные индексы для пользовательских таблиц не должны проверяться.
NOINDEX
поддерживается только для обратной совместимости и не влияет DBCC CHECKALLOC
.
REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
Указывает, что DBCC CHECKALLOC
исправите найденные ошибки. База данных database_name должна работать в однопользовательском режиме.
REPAIR_ALLOW_DATA_LOSS
Предпринимает попытку устранить любые обнаруженные ошибки. Эти исправления могут привести к частичной потере данных.
REPAIR_ALLOW_DATA_LOSS
— единственный вариант, позволяющий исправить ошибки выделения.REPAIR_FAST
Синтаксис сохраняется только в целях обратной совместимости. Действия по восстановлению не выполняются.
REPAIR_REBUILD
Неприменимо.
Внимание
Используйте аргументы REPAIR только как последнее средство. Для устранения ошибок рекомендуется восстановление из резервной копии. Операции восстановления не учитывают какие-либо ограничения, которые могут существовать в таблицах или между ними. Если указанная таблица включена в одно или несколько ограничений, рекомендуется выполнить инструкцию DBCC CHECKCONSTRAINTS
после операции восстановления. Если необходимо использовать аргумент REPAIR, выполните инструкцию DBCC CHECKDB
без параметра восстановления, чтобы узнать требуемый уровень восстановления. Если вы используете REPAIR_ALLOW_DATA_LOSS
уровень, рекомендуется создать резервную копию базы данных перед выполнением DBCC CHECKDB
этого параметра.
ВМЕСТЕ С
Позволяет задавать параметры.
ALL_ERRORMSGS
Отображает все сообщения об ошибках. Все сообщения об ошибках выводятся по умолчанию. Указание или пропуск этого параметра не приводит к изменениям.
NO_INFOMSGS
Подавляет все информационные сообщения и отчет об использованном пространстве.
TABLOCK
Настраивает команду DBCC на получение монопольной блокировки базы данных.
ESTIMATEONLY
Отображает предполагаемый объем пространства, необходимого
tempdb
для выполненияDBCC CHECKALLOC
при указании всех остальных параметров.
Замечания
DBCC CHECKALLOC
проверяет выделение всех страниц в базе данных независимо от типа страницы или типа объекта, к которому они относятся. Также проверяются различные внутренние структуры, используемые для отслеживания этих страниц и связей между ними.
Если NO_INFOMSGS
он не указан, DBCC CHECKALLOC
собирает сведения об использовании пространства для всех объектов в базе данных. Впоследствии эти сведения отображаются вместе со всеми обнаруженными ошибками.
Примечание.
Функции DBCC CHECKALLOC
включены в DBCC CHECKDB и DBCC CHECKFILEGROUP. Это означает, что вам не нужно выполнять отдельно DBCC CHECKALLOC
от этих инструкций. DBCC CHECKALLOC
не проверяет данные FILESTREAM. FILESTREAM сохраняет в файловой системе большие двоичные объекты.
Внутренний моментальный снимок базы данных
DBCC CHECKALLOC
использует внутренний моментальный снимок базы данных для обеспечения согласованности транзакций, которую требуется выполнить эти проверки. Если моментальный снимок не может быть создан или TABLOCK
указан, DBCC CHECKALLOC
пытается получить монопольнуюX
() блокировку базы данных, чтобы получить необходимую согласованность.
Примечание.
Выполнение DBCC CHECKALLOC
не tempdb
выполняет никаких проверок. Это связано с тем, что по соображениям производительности моментальные снимки базы данных недоступны tempdb
. Это означает, что нельзя достичь требуемой согласованности транзакций. Остановите и запустите ядро СУБД для устранения проблем tempdb
с выделением. Это действие удаляет и повторно создает tempdb
базу данных.
Общие сведения об ошибках DBCC
DBCC CHECKALLOC
После завершения команды сообщение записывается в журнал ошибок SQL Server. Если команда DBCC успешно выполняется, сообщение указывает на успешное завершение и время выполнения команды. Если выполнение команды DBCC прерывается до завершения проверки по причине ошибки, сообщение указывает на прерывание команды и приводит значение состояния и количество времени, затраченного на выполнение команды. В следующей таблице перечислены и описаны значения состояний, которые могут быть включены в сообщение.
State | Описание: |
---|---|
0 | Возникла ошибка с номером 8930. Это указывает на повреждение метаданных, вызвавшее прекращение выполнения команды DBCC. |
1 | Возникла ошибка с номером 8967. Внутренняя ошибка DBCC. |
2 | При аварийном восстановлении базы данных произошла ошибка. |
3 | Это указывает на повреждение метаданных, вызвавшее прекращение выполнения команды DBCC. |
4 | Обнаружено нарушение доступа или утверждения. |
5 | Возникла неизвестная ошибка, которая привела к прекращению выполнения команды DBCC. |
Отчеты об ошибках
Файл мини-дампа (SQLDUMP<nnnn>.txt
) создается в каталоге SQL Server LOG
при обнаружении DBCC CHECKALLOC
ошибки повреждения. Если для экземпляра SQL Server включены сбор данных об использовании компонентов и функции отчетов об ошибках, файл автоматически перенаправляются в корпорацию Майкрософт. Собранные данные используются для улучшения функциональности SQL Server.
Файл дампа содержит результаты DBCC CHECKALLOC
команды и дополнительные диагностические выходные данные. Доступ к этому файлу ограничен списками управления доступом на уровне пользователей. Доступ ограничен учетной записью службы SQL Server и членами роли sysadmin. По умолчанию роль sysadmin содержит всех членов группы Windows BUILTIN\Administrators и группы локальных администраторов. Команда DBCC не завершается ошибкой, если процесс сбора данных завершается сбоем.
Устранение ошибок
Если DBCC CHECKALLOC
сообщает об ошибках, рекомендуется восстановить базу данных из резервной копии базы данных, а не выполнить восстановление. Если резервная копия не существует, выполнение восстановления может исправить обнаруженные ошибки; однако исправление ошибок может потребовать удаления некоторых страниц и, следовательно, данных.
Устранение ошибок может быть выполнено в ходе пользовательской транзакции. Это позволяет откатить изменения. Если изменения откатываются, база данных по-прежнему будет содержать ошибки и должна быть восстановлена из резервной копии. После того как исправление ошибок будет завершено, следует создать резервную копию базы данных.
Результирующие наборы
В следующих таблицах описываются возвращаемые DBCC CHECKALLOC
сведения.
Позиция | Description |
---|---|
FirstIAM | Только для внутреннего применения. |
Root | Только для внутреннего применения. |
Dpages | Число страниц данных. |
Используемые страницы | Число выделенных страниц. |
Выделенные экстенты | Экстенты, выделенные для объекта. Если использованы смешанные страницы размещения, то могут существовать страницы, выделенные без экстентов. |
DBCC CHECKALLOC
также сообщает сводку по выделению для каждого индекса и секции в каждом файле. В этой сводке описано распределение данных.
Позиция | Description |
---|---|
Reserved pages | Страницы, выделенные для индекса и неиспользованные страницы в выделенных экстентах. |
Used pages | Страницы, выделенные и используемые индексом. |
ИД раздела | Только для внутреннего применения. |
Alloc Unit ID | Только для внутреннего применения. |
In-row data | Страницы содержат данные индекса или кучи. |
LOB data | Страницы содержат данные типа varchar(max), nvarchar(max), varbinary(max), text, ntext, xml и image. |
Row-overflow data | Страницы содержат данные столбцов переменной длины, которые включают внестрочные данные. |
DBCC CHECKALLOC
возвращает следующий результирующий набор (значения могут отличаться), за исключением случаев, когда ESTIMATEONLY
или NO_INFOMSGS
указан.
DBCC results for 'master'.
***************************************************************
Table sysobjects Object ID 1.
Index ID 1 FirstIAM (1:11) Root (1:12) Dpages 22.
Index ID 1. 24 pages used in 5 dedicated extents.
Index ID 2 FirstIAM (1:1368) Root (1:1362) Dpages 10.
Index ID 2. 12 pages used in 2 dedicated extents.
Index ID 3 FirstIAM (1:1392) Root (1:1408) Dpages 4.
Index ID 3. 6 pages used in 0 dedicated extents.
Total number of extents is 7.
***************************************************************
'...'
***************************************************************
Table spt_server_info Object ID 1938105945.
Index ID 1 FirstIAM (1:520) Root (1:508) Dpages 1.
Index ID 1. 3 pages used in 0 dedicated extents.
Total number of extents is 0.
***************************************************************
Processed 52 entries in sysindexes for database ID 1.
File 1. Number of extents = 210, used pages = 1126, reserved pages = 1280.
File 1 (number of mixed extents = 73, mixed pages = 184).
Object ID 1, Index ID 0, data extents 5, pages 24, mixed extent pages 9.
'...'
Object ID 1938105945, Index ID 0, data extents 0, pages 3, mixed extent pages 3.
Total number of extents = 210, used pages = 1126, reserved pages = 1280 in this database.
(number of mixed extents = 73, mixed pages = 184) in this database.
CHECKALLOC found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC results for 'master'.
***************************************************************
Table sys.sysrowsetcolumns Object ID 4.
Index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data). FirstIAM (1:98). Root (1:94). Dpages 7.
Index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data). 9 pages used in 1 dedicated extents.
Index ID 1, partition ID 262144, alloc unit ID 262398 (type Row-overflow data). FirstIAM (0:0). Root (0:0). Dpages 0.
Index ID 1, partition ID 262144, alloc unit ID 262398 (type Row-overflow data). 0 pages used in 0 dedicated extents.
Total number of extents is 1.
...
***************************************************************
Processed 201 entries in system catalog for database ID 1.
File 1. Number of extents = 44, used pages = 300, reserved pages = 345.
File 1 (number of mixed extents = 29, mixed pages = 225).
Object ID 4, index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data), data extents 1, pages 9, mixed extent pages 8.
Object ID 5, index ID 1, partition ID 327680, alloc unit ID 327680 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
Object ID 7, index ID 1, partition ID 458752, alloc unit ID 458752 (type In-row data), data extents 0, pages 5, mixed extent pages 5.
Object ID 8, index ID 0, partition ID 524288, alloc unit ID 524288 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
Object ID 13, index ID 1, partition ID 851968, alloc unit ID 851968 (type In-row data), data extents 1, pages 9, mixed extent pages 8.
Object ID 15, index ID 1, partition ID 983040, alloc unit ID 983040 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
Object ID 26, index ID 1, partition ID 281474978414592, alloc unit ID 1703937 (type In-row data), data extents 0, pages 3, mixed extent pages 3.
Object ID 27, index ID 1, partition ID 281474978480128, alloc unit ID 1769473 (type In-row data), data extents 0, pages 3, mixed extent pages 3.
Object ID 27, index ID 2, partition ID 562949955190784, alloc unit ID 1769474 (type In-row data), index extents 0, pages 3, mixed extent pages 3.
...
Object ID 1179151246, index ID 1, partition ID 72057594038845440, alloc unit ID 13435136 (type In-row data), data extents 2, pages 18, mixed extent pages 8.
Object ID 1179151246, index ID 2, partition ID 72057594038910976, alloc unit ID 13566208 (type In-row data), index extents 1, pages 16, mixed extent pages 8.
Object ID 1911677858, index ID 0, partition ID 72057594039631872, alloc unit ID 15073536 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
Total number of extents = 41, used pages = 289, reserved pages = 323 in this database.
(number of mixed extents = 27, mixed pages = 211) in this database.
CHECKALLOC found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
При ESTIMATEONLY
указании DBCC CHECKALLOC
возвращает следующий результирующий набор.
Estimated TEMPDB space needed for CHECKALLOC (KB)
-------------------------------------------------
34
(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Разрешения
Необходимо быть членом предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner .
Примеры
В следующем примере выполняется инструкция DBCC CHECKALLOC
для текущей базы данных и для базы данных AdventureWorks2022
.
-- Check the current database.
DBCC CHECKALLOC;
GO
-- Check the AdventureWorks2022 database.
DBCC CHECKALLOC (AdventureWorks2022);
GO