DBCC CHECKALLOC (Transact-SQL)
Изменения: 17 ноября 2008 г.
Проверяет согласованность структур выделения места на диске для указанной базы данных.
Соглашения о синтаксическом обозначении в 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 с этим параметром. - REPAIR_ALLOW_DATA_LOSS
- WITH
Позволяет задавать параметры.
- ALL_ERRORMSGS
Отображает все сообщения об ошибках. В SQL Server 2005 с пакетом обновления 3 (SP3) по умолчанию отображаются все сообщения об ошибках. Указание или пропуск этого параметра не имеют значения. В более ранних версиях SQL Server, если аргумент ALL_ERRORMSGS не указан, будут отображаться лишь первые 200 сообщений об ошибках для каждого объекта.
- NO_INFOMSGS
Подавляет все информационные сообщения и отчет об использованном пространстве.
- TABLOCK
Настраивает команду DBCC на получение монопольной блокировки базы данных.
- ESTIMATE ONLY
Отображает оценочный объем места в базе данных tempdb, необходимый для запуска инструкции DBCC CHECKALLOC со всеми остальными заданными параметрами.
Результирующие наборы
В следующей таблице описаны данные, возвращаемые инструкцией DBCC CHECKALLOC.
Элемент | Описание |
---|---|
FirstIAM |
Только для внутреннего применения. |
Root |
Только для внутреннего применения. |
Dpages |
Число страниц данных. |
Pages used |
Число размещенных страниц. |
Dedicated extents |
Экстенты, выделенные для объекта. Если использованы смешанные страницы размещения, то могут существовать страницы, размещенные без экстентов. |
Инструкция DBCC CHECKALLOC также формирует сводный отчет о размещении для каждого индекса и секции в каждом файле. В этой сводке описано распределение данных.
Элемент | Описание |
---|---|
Reserved pages |
Страницы, выделенные для индекса, и неиспользованные страницы в выделенных экстентах. |
Used pages |
Страницы, выделенные и используемые индексом. |
Partition ID |
Только для внутреннего применения. |
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.
Замечания
Инструкция DBCC CHECKALLOC проверяет выделение всех страниц в базе данных, независимо от типа страницы и типа объекта, к которому они принадлежат. Также проверяются различные внутренние структуры, используемые для отслеживания этих страниц и связей между ними.
Если не указан аргумент NO_INFOMSGS, то инструкция DBCC CHECKALLOC собирает сведения об использовании пространства всеми объектами в базе данных. Впоследствии эти сведения будут отображены вместе со всеми обнаруженными ошибками.
Примечание. |
---|
Функциональность инструкции DBCC CHECKALLOC включена в инструкции DBCC CHECKDB и DBCC CHECKFILEGROUP. Это означает, что не нужно запускать DBCC CHECKALLOC отдельно от этих инструкций. |
Внутренней моментальный снимок базы данных
Инструкция DBCC CHECKALLOC использует внутренний моментальный снимок базы данных, чтобы обеспечить согласованность транзакций, необходимую для проведения этих проверок. Если нельзя создать моментальный снимок или указан аргумент TABLOCK, то инструкция DBCC CHECKALLOC пытается получить монопольную (X) блокировку базы данных, чтобы обеспечить необходимую согласованность. Дополнительные сведения о блокировке см. в разделе Режимы блокировки.
Примечание. |
---|
В SQL Server 2005 запуск инструкции DBCC CHECKALLOC для базы данных tempdb не приводит к выполнению каких-либо проверок. Это обусловлено тем, что по соображениям производительности моментальные снимки базы данных недоступны для базы данных tempdb. Это означает, что нельзя достичь требуемой согласованности транзакций. Остановите и запустите службу MSSQLSERVER для устранения любых проблем выделения пространства для базы данных tempdb. Это действие удаляет и повторно создает базу данных tempdb. |
Основные сведения о сообщениях об ошибках DBCC
После завершения команды DBCC CHECKALLOC в журнал ошибок SQL Server будет записано сообщение. При успешном выполнении команды DBCC сообщается об успешном завершении и количестве времени, затраченном на выполнение команды. Если выполнение команды DBCC прерывается до завершения проверки по причине ошибки, сообщение указывает на прерывание команды и приводит значение состояния и количество времени, затраченного на выполнение команды. В следующей таблице перечислены и описаны значения состояний, которые могут быть включены в сообщение.
Штат | Описание |
---|---|
0 |
Возникла ошибка с номером 8930. Указывает на повреждение метаданных, вызвавшее прекращение выполнения команды DBCC. |
1 |
Возникла ошибка с номером 8967. Внутренняя ошибка DBCC. |
2 |
Произошла ошибка при аварийном восстановлении базы данных. |
3 |
Указывает на повреждение метаданных, вызвавшее прекращение выполнения команды DBCC. |
4 |
Обнаружено нарушение доступа или утверждения. |
5 |
Возникла неизвестная ошибка, которая привела к прекращению выполнения команды DBCC. |
Отчет об ошибках
В SQL Server 2005 с пакетом обновления 1 (SP1) при обнаружении командой DBCC CHECKALLOC ошибки в каталоге SQL Server LOG создается мини-дамп файл (SQLDUMPnnnn.txt). Если для экземпляра SQL Server включены функции сбора данных об использовании компонентов и отчетов об ошибках, этот файл автоматически отправляется корпорации Майкрософт. Собранные данные используются для улучшения функциональности SQL Server. Дополнительные сведения см. в разделе Параметры отчетов об ошибках и использовании.
Дамп файл содержит результаты выполнения команды DBCC CHECKALLOC и дополнительные диагностические сведения. Доступ к этому файлу ограничен списками управления доступом на уровне пользователей. Доступ предоставлен только учетной записи службы SQL Server и членам роли sysadmin. По умолчанию роль sysadmin содержит всех членов группы Windows BUILTIN\Администраторы и группы локальных администраторов. В случае ошибки процесса сбора данных команда DBCC не завершается ошибкой.
Разрешение ошибок
Если инструкция DBCC CHECKALLOC сообщает о каких-нибудь ошибках, рекомендуется восстановить базу данных из резервной копии, а не запускать восстановление. Если резервной копии не существует, то процедура исправления может устранить обнаруженные ошибки; однако при устранении ошибок может потребоваться удалить некоторые страницы и, следовательно, их данные.
Устранение ошибок может быть выполнено в ходе пользовательской транзакции. Это позволяет откатить изменения. При откате изменений база данных будет по-прежнему содержать ошибки, и ее необходимо будет восстанавливать из резервной копии. После того, как исправление ошибок будет завершено, следует создать резервную копию базы данных.
Разрешения
Необходимо членство в фиксированной серверной роли sysadmin или фиксированной роли базы данных db_owner.
Примеры
Следующий пример выполняет инструкцию DBCC CHECKALLOC
для текущей базы данных и для базы данных AdventureWorks
.
-- Check the current database.
DBCC CHECKALLOC;
GO
-- Check the AdventureWorks database.
DBCC CHECKALLOC (AdventureWorks);
GO
См. также
Справочник
Другие ресурсы
Организация таблиц и индексов
Управление дисковым пространством, занятым объектами
Справка и поддержка
Получение помощи по SQL Server 2005
Журнал изменений
Версия | Журнал |
---|---|
17 ноября 2008 г. |
|
14 апреля 2006 г. |
|
5 декабря 2005 г. |
|