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
    Указывает, что не следует проверять некластеризованные индексы для таблиц пользователя.

    ms188422.note(ru-ru,SQL.90).gifПримечание.
    Аргумент 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
      Неприменимо.
    ms188422.note(ru-ru,SQL.90).gifВажно!
    Используйте аргументы REPAIR только как последнее средство. Для устранения ошибок рекомендуется восстановление из резервной копии. Операции устранения ошибок не учитывают ограничения, которые могут быть наложены на таблицы или между таблицами. Если указанная таблица участвует в одном или нескольких ограничениях, рекомендуется после операции устранения ошибок выполнить инструкцию DBCC CHECKCONSTRAINTS. Если необходимо использовать аргументы REPAIR, выполните инструкцию DBCC CHECKDB без параметра восстановления, чтобы узнать требуемый уровень восстановления. При использовании уровня REPAIR_ALLOW_DATA_LOSS, рекомендуется создать резервную копию базы данных перед выполнением инструкции DBCC CHECKDB с этим параметром.
  • 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 собирает сведения об использовании пространства всеми объектами в базе данных. Впоследствии эти сведения будут отображены вместе со всеми обнаруженными ошибками.

ms188422.note(ru-ru,SQL.90).gifПримечание.
Функциональность инструкции DBCC CHECKALLOC включена в инструкции DBCC CHECKDB и DBCC CHECKFILEGROUP. Это означает, что не нужно запускать DBCC CHECKALLOC отдельно от этих инструкций.

Внутренней моментальный снимок базы данных

Инструкция DBCC CHECKALLOC использует внутренний моментальный снимок базы данных, чтобы обеспечить согласованность транзакций, необходимую для проведения этих проверок. Если нельзя создать моментальный снимок или указан аргумент TABLOCK, то инструкция DBCC CHECKALLOC пытается получить монопольную (X) блокировку базы данных, чтобы обеспечить необходимую согласованность. Дополнительные сведения о блокировке см. в разделе Режимы блокировки.

ms188422.note(ru-ru,SQL.90).gifПримечание.
В 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

См. также

Справочник

DBCC (Transact-SQL)

Другие ресурсы

Организация таблиц и индексов
Управление дисковым пространством, занятым объектами

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

17 ноября 2008 г.

Добавления
  • В определении ALL_ERRORMSGS описаны новые функции в пакете обновления 3 (SP3).

14 апреля 2006 г.

Добавления
  • В раздел «Примечания» добавлен подраздел «Отчет об ошибках». В этом разделе описаны новые функциональные возможности пакета обновления 1 (SP1).

5 декабря 2005 г.

Изменения
  • Исправлен синтаксис.
  • В список типов данных элемента LOB Data добавлен тип xml.
  • Исправлено определение аргумента REPAIR_FAST. Этот параметр не выполняет действий по восстановлению.
  • В раздел «Примечания» добавлены сведения о сообщениях, записываемых в журнал ошибок SQL Server, и описания значений состояния.