DBCC CHECKTABLE (Transact-SQL)DBCC CHECKTABLE (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ:даSQL Server (начиная с 2008)даБаза данных SQL AzureдаХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Производит проверку целостности всех страниц и структур, составляющих таблицу или индексированное представление.Checks the integrity of all the pages and structures that make up the table or indexed view.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

DBCC CHECKTABLE     
(    
    table_name | view_name    
    [ , { NOINDEX | index_id }    
     |, { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD }     
    ]     
)    
    [ WITH     
        { [ ALL_ERRORMSGS ]    
          [ , EXTENDED_LOGICAL_CHECKS ]     
          [ , NO_INFOMSGS ]    
          [ , TABLOCK ]     
          [ , ESTIMATEONLY ]     
          [ , { PHYSICAL_ONLY | DATA_PURITY } ]     
          [ , MAXDOP = number_of_processors ]    
        }    
    ]    

АргументыArguments

table_name | view_nametable_name | view_name
Таблица или индексированное представление, для которой необходимо выполнять проверки целостности.Is the table or indexed view for which to run integrity checks. Имена таблиц и представлений должны соответствовать правилам построения идентификаторов.Table or view names must comply with the rules for identifiers.

NOINDEXNOINDEX
Указывает, что тщательную проверку некластеризованных индексов для пользовательских таблиц выполнять не следует.Specifies that intensive checks of nonclustered indexes for user tables should not be performed. Это уменьшает общее время выполнения.This decreases the overall execution time. Аргумент NOINDEX не оказывает влияния на проверки системных таблиц, поскольку проверки целостности для индексов всех системных таблиц выполняются всегда.NOINDEX does not affect system tables because the integrity checks are always performed on all system table indexes.

index_idindex_id
Идентификатор индекса, для которого выполняются проверки целостности.Is the index identification (ID) number for which to run integrity checks. Если указан аргумент index_id, инструкция DBCC CHECKTABLE выполняет проверки целостности только для этого индекса, включая кучу или кластеризованный индекс.If index_id is specified, DBCC CHECKTABLE runs integrity checks only on that index, together with the heap or clustered index.

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILDREPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
Указывает, что инструкции DBCC CHECKTABLE следует исправлять обнаруженные ошибки.Specifies that DBCC CHECKTABLE repair the found errors. Для использования параметра исправления база данных должна быть открыта в однопользовательском режиме.To use a repair option, the database must be in single-user mode.

REPAIR_ALLOW_DATA_LOSSREPAIR_ALLOW_DATA_LOSS
Пытается устранить все обнаруженные ошибки.Tries to repair all reported errors. Эти исправления могут привести к частичной потере данных.These repairs can cause some data loss.

REPAIR_FASTREPAIR_FAST
Синтаксис сохраняется только в целях обратной совместимости.Syntax is maintained for backward compatibility only. Действия по восстановлению не выполняются.No repair actions are performed.

REPAIR_REBUILDREPAIR_REBUILD
Выполняет действия по восстановлению данных, которые можно выполнить без риска их потери.Performs repairs that have no possibility of data loss. Это может быть быстрое восстановление (например, восстановление отсутствующих строк в некластеризованных индексах) или более ресурсоемкие операции (например, перестроение индекса).This can include quick repairs, such as repairing missing rows in non-clustered indexes, and more time-consuming repairs, such as rebuilding an index.
Этот аргумент не исправляет ошибки, связанные с данными FILESTREAM.This argument does not repair errors involving FILESTREAM data.

Примечание

Используйте аргументы REPAIR только как последнее средство.Use the REPAIR options only as a last resort. Для устранения ошибок рекомендуется восстановление из резервной копии.To repair errors, we recommend restoring from a backup. Операции восстановления не учитывают никакие ограничения, которые могут существовать для таблиц или между таблицами.Repair operations do not consider any of the constraints that may exist on or between tables. Если указанная таблица включена в одно или несколько ограничений, рекомендуется выполнить инструкцию DBCC CHECKCONSTRAINTS после операции восстановления.If the specified table is involved in one or more constraints, we recommend running DBCC CHECKCONSTRAINTS after a repair operation. Если необходимо использовать аргумент REPAIR, выполните инструкцию DBCC CHECKTABLE без параметра восстановления, чтобы узнать требуемый уровень восстановления.If you must use REPAIR, run DBCC CHECKTABLE without a repair option to find the repair level to use. При использовании уровня REPAIR_ALLOW_DATA_LOSS рекомендуется создать резервную копию базы данных перед выполнением инструкции DBCC CHECKTABLE с этим параметром.If you are going to use the REPAIR_ALLOW_DATA_LOSS level, we recommend that you back up the database before you run DBCC CHECKTABLE with this option.

ALL_ERRORMSGSALL_ERRORMSGS
Отображает неограниченное число ошибок.Displays an unlimited number of errors. Все сообщения об ошибках выводятся по умолчанию.All error messages are displayed by default. Указание или пропуск этого параметра не приводит к изменениям.Specifying or omitting this option has no effect.

EXTENDED_LOGICAL_CHECKSEXTENDED_LOGICAL_CHECKS
При уровне совместимости 100 (SQL Server 2008SQL Server 2008) и выше выполняются проверки логической согласованности индексированных представлений, XML-индексов и пространственных индексов, если они есть.If the compatibility level is 100 ( SQL Server 2008SQL Server 2008) or higher, performs logical consistency checks on an indexed view, XML indexes, and spatial indexes, where present.
Дополнительные сведения см. в подразделе Выполнение проверок логической целостности индексов раздела Замечания далее в этой статье.For more information, see Performing Logical Consistency Checks on Indexes in the Remarks section later in this topic.

NO_INFOMSGSNO_INFOMSGS
Подавляет вывод всех информационных сообщений.Suppresses all informational messages.

TABLOCKTABLOCK
Указывает инструкции DBCC CHECKTABLE использовать разделяемую блокировку таблицы вместо создания внутреннего моментального снимка базы данных.Causes DBCC CHECKTABLE to obtain a shared table lock instead of using an internal database snapshot. Аргумент TABLOCK позволяет ускорить работу инструкции DBCC CHECKTABLE в условиях высокой загрузки, но снижает текущую согласованность данных для таблицы во время выполнения этой инструкции.TABLOCK will cause DBCC CHECKTABLE to run faster on a table under heavy load, but decreases the concurrency available on the table while DBCC CHECKTABLE is running.

ESTIMATEONLYESTIMATEONLY
Отображает предполагаемый размер базы данных tempdb, необходимый для выполнения инструкции DBCC CHECKTABLE с указанными параметрами.Displays the estimated amount of tempdb space needed to run DBCC CHECKTABLE with all the other specified options.

PHYSICAL_ONLYPHYSICAL_ONLY
Ограничивает область проверки целостностью физической структуры страниц, заголовков записей и физической структуры сбалансированных деревьев.Limits the checking to the integrity of the physical structure of the page, record headers and the physical structure of B-trees. Параметр предназначен для выполнения облегченной проверки физической согласованности таблицы, а также может выявлять поврежденные страницы и общие сбои оборудования, которые могут привести к потере данных.Designed to provide a small overhead check of the physical consistency of the table, this check can also detect torn pages, and common hardware failures that can compromise data. Полный запуск инструкции DBCC CHECKTABLE может занять значительно больше времени, чем в предыдущих версиях.A full run of DBCC CHECKTABLE may take considerably longer than in earlier versions. Это вызвано следующими причинами.This behavior occurs because of the following reasons:

  • Логические проверки стали более сложными.The logical checks are more comprehensive.
  • Усложнился ряд базовых структур, нуждающихся в проверке.Some of the underlying structures to be checked are more complex.
  • Добавлено много новых проверок для поддержки новых функций.Many new checks have been introduced to include the new features.

Иными словами, указание аргумента PHYSICAL_ONLY может существенно снизить время выполнения инструкции DBCC CHECKTABLE для больших таблиц и поэтому рекомендуется для частого использования в рабочих системах.Therefore, using the PHYSICAL_ONLY option may cause a much shorter run-time for DBCC CHECKTABLE on large tables and is therefore recommended for frequent use on production systems. Также рекомендуется периодически производить полный запуск инструкции DBCC CHECKTABLE.We still recommend that a full run of DBCC CHECKTABLE be performed periodically. Периодичность запуска зависит от факторов, индивидуальных для каждого предприятия и каждой производственной среды.The frequency of these runs depends on factors specific to individual businesses and production environments. Аргумент PHYSICAL_ONLY всегда неявно включает аргумент NO_INFOMSGS и не должен указываться вместе с параметрами исправления ошибок.PHYSICAL_ONLY always implies NO_INFOMSGS and is not allowed with any one of the repair options.

Примечание

Указание аргумента PHYSICAL_ONLY приводит к пропуску инструкцией DBCC CHECKTABLE всех проверок данных FILESTREAM.Specifying PHYSICAL_ONLY causes DBCC CHECKTABLE to skip all checks of FILESTREAM data.

DATA_PURITYDATA_PURITY
Указание значения аргумента приводит к выполнению инструкцией DBCC CHECKTABLE проверки таблицы на недействительность или выход из допустимого диапазона значений столбцов.Causes DBCC CHECKTABLE to check the table for column values that are not valid or out-of-range. Например, инструкция DBCC CHECKTABLE обнаруживает столбцы со значениями даты и времени, выходящими за допустимый диапазон значений типа данных datetime, либо столбцы типа данных decimal или приблизительных числовых типов данных с недопустимыми значениями масштаба или точности.For example, DBCC CHECKTABLE detects columns with date and time values that are larger than or less than the acceptable range for the datetime data type; or decimal or approximate-numeric data type columns with scale or precision values that are not valid.
Проверки целостности значений столбцов включены по умолчанию, и для них не требуется указывать параметр DATA_PURITY.Column-value integrity checks are enabled by default and do not require the DATA_PURITY option. Для баз данных, обновляемых с предыдущих версий SQL ServerSQL Server, имеется возможность использовать инструкцию DBCC CHECKTABLE WITH DATA_PURITY для нахождения и исправления ошибок для заданной таблицы, однако проверки столбцов-значений таблицы запрещены по умолчанию до тех пор, пока инструкция DBCC CHECKDB WITH DATA_PURITY работает с базой данных без ошибок.For databases upgraded from earlier versions of SQL ServerSQL Server, you can use DBCC CHECKTABLE WITH DATA_PURITY to find and correct errors on a specific table; however, column-value checks on the table are not enabled by default until DBCC CHECKDB WITH DATA_PURITY has been run error free on the database. После этого инструкции DBCC CHECKDB и DBCC CHECKTABLE проверяют целостность данных в столбцах-значениях по умолчанию.After this, DBCC CHECKDB and DBCC CHECKTABLE check column-value integrity by default.
Ошибки проверки, передаваемые при наличии этого параметра, не могут быть устранены с помощью параметров восстановления DBCC.Validation errors reported by this option cannot be fixed by using DBCC repair options. Дополнительные сведения об устранении этих ошибок вручную см. в статье 923247 базы знаний Майкрософт Устранение ошибки DBCC 2570 в SQL Server 2005 и более поздних версиях.For information about manually correcting these errors, see Knowledge Base article 923247: Troubleshooting DBCC error 2570 in SQL Server 2005 and later versions.
Если указан аргумент PHYSICAL_ONLY, проверка целостности значений в столбцах не выполняется.If PHYSICAL_ONLY is specified, column-integrity checks are not performed.

MAXDOPMAXDOP
Область применения: SQL ServerSQL Server (начиная с версии SQL Server 2014 (12.x)SQL Server 2014 (12.x) с пакетом обновления 2 (SP2) до версии SQL Server 2017SQL Server 2017).Applies to: SQL ServerSQL Server (Starting with SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 through SQL Server 2017SQL Server 2017).

Переопределяет параметр конфигурации, задающий максимальный уровень параллелизма, в sp_configure для инструкции.Overrides the max degree of parallelism configuration option of sp_configure for the statement. Значение MAXDOP может превышать значение, настроенное с помощью sp_configure.The MAXDOP can exceed the value configured with sp_configure. Если MAXDOP превышает значение, настроенное с помощью Resource Governor, ядро СУБД использует значение MAXDOP из Resource Governor, как описано в статье "ALTER WORKLOAD GROUP (Transact-SQL)".If MAXDOP exceeds the value configured with Resource Governor, the Database Engine uses the Resource Governor MAXDOP value, described in ALTER WORKLOAD GROUP (Transact-SQL). Все семантические правила, используемые параметром конфигурации max degree of parallelism, применимы при использовании указания запроса MAXDOP.All semantic rules used with the max degree of parallelism configuration option are applicable when you use the MAXDOP query hint. Дополнительные сведения см. в разделе Настройка параметра конфигурации сервера max degree of parallelism.For more information, see Configure the max degree of parallelism Server Configuration Option.

Примечание

Если значение MAXDOP равно нулю, то сервер выбирает максимальную степень параллелизма.If MAXDOP is set to zero then the server chooses the max degree of parallelism.

RemarksRemarks

Примечание

Чтобы выполнить инструкцию DBCC CHECKTABLE для каждой таблицы в базе данных, используйте инструкцию DBCC CHECKDB.To perform DBCC CHECKTABLE on every table in the database, use DBCC CHECKDB.

Для указанной таблицы инструкция DBCC CHECKTABLE выполняет следующие проверки.For the specified table, DBCC CHECKTABLE checks for the following:

  • Верны ли ссылки на страницы данных индекса, на страницы данных в строке, на превышающие размер страницы данные строки и на страницы больших объектов.Index, in-row, LOB, and row-overflow data pages are correctly linked.
  • Верен ли порядок сортировки индексов.Indexes are in their correct sort order.
  • Согласованы ли указатели.Pointers are consistent.
  • Обоснованы ли данные, содержащиеся на каждой из страниц, в том числе вычисляемые столбцы.The data on each page is reasonable, included computed columns.
  • Обоснованы ли смещения страниц.Page offsets are reasonable.
  • Все ли строки в базовой таблице имеют совпадающие строки в некластеризованных индексах, и наоборот.Every row in the base table has a matching row in each nonclustered index, and vice-versa.
  • Все ли строки в секционированной таблице или индексе находятся в соответствующих секциях.Every row in a partitioned table or index is in the correct partition.
  • Согласованность между файловой системой и таблицей на уровне ссылок при хранении данных varbinary(max) в файловой системе с помощью FILESTREAM.Link-level consistency between the file system and table when storing varbinary(max) data in the file system using FILESTREAM.

Выполнение проверок логической целостности индексовPerforming Logical Consistency Checks on Indexes

Процедура проверки логической целостности индексов зависит от уровня совместимости базы данных следующим образом.Logical consistency checking on indexes varies according to the compatibility level of the database, as follows:

  • При уровне совместимости 100 (SQL Server 2008SQL Server 2008) и выше.If the compatibility level is 100 (SQL Server 2008SQL Server 2008) or higher:

    • Если не указан NOINDEX, DBCC CHECKTABLE выполняет как физические, так и логические проверки целостности отдельной таблицы и всех ее некластеризованных индексов.Unless NOINDEX is specified, DBCC CHECKTABLE performs both physical and logical consistency checks on a single table and on all its nonclustered indexes. Однако в XML-индексах, пространственных индексах и индексированных представлениях по умолчанию выполняются только проверки физической целостности.However, on XML indexes, spatial indexes, and indexed views only physical consistency checks are performed by default.
    • Если указан параметр WITH EXTENDED_LOGICAL_CHECKS, выполняются логические проверки в индексированных представлениях, XML-индексах и пространственных индексах (при их наличии).If WITH EXTENDED_LOGICAL_CHECKS is specified, logical checks are performed on an indexed view, XML indexes, and spatial indexes, where present. По умолчанию проверки физической согласованности выполняются раньше, чем проверки логической согласованности.By default, physical consistency checks are performed before the logical consistency checks. Если также указан параметр NOINDEX, выполняются только проверки логической согласованности.If NOINDEX is also specified, only the logical checks are performed.
      Они проверяют согласованность внутренней таблицы индексов или объекта индекса с пользовательской таблицей, на которую он указывает.These logical consistency checks cross check the internal index table of the index object with the user table that it is referencing. Для поиска выбросов создается внутренний запрос, выполняющий полную проверку пересечения внутренних и пользовательских таблиц.To find outlying rows, an internal query is constructed to perform a full intersection of the internal and user tables. Выполнение этого запроса может крайне отрицательно сказаться на производительности, а ход его выполнения невозможно отследить.Running this query can have a very high effect on performance, and its progress cannot be tracked. Поэтому рекомендуется указывать параметр WITH EXTENDED_LOGICAL_CHECKS только в тех случаях, когда возможно возникновение проблем с индексированием, не связанных с физическими повреждениями, или при неверных контрольных суммах на уровне страниц, или же при подозрении на повреждение оборудования на уровне столбцов.Therefore, we recommend that you specify WITH EXTENDED_LOGICAL_CHECKS only if you suspect index issues that are unrelated to physical corruption, or if page-level checksums have been turned off and you suspect column-level hardware corruption.
    • Если это отфильтрованный индекс, инструкция DBCC CHECKDB выполняет проверку целостности, чтобы убедиться, что записи индекса удовлетворяют условию предиката фильтра.If the index is a filtered index, DBCC CHECKDB performs consistency checks to verify that the index entries satisfy the filter predicate.
  • Начиная с SQL Server 2016 (13.x)SQL Server 2016 (13.x) дополнительные проверки материализованных вычисляемых столбцов, столбцов пользовательских типов и фильтруемых индексов по умолчанию не выполняются во избежание ресурсоемких вычислений выражений.Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x), additional checks on persisted computed columns, UDT columns, and filtered indexes will not run by default to avoid the expensive expression evaluations. Это изменение значительно сокращает длительность выполнения инструкции CHECKDB для баз данных, содержащих такие объекты.This change greatly reduces the duration of CHECKDB against databases containing these objects. Однако проверки физической согласованности этих объектов проводятся всегда.However, the physical consistency checks of these objects is always completed. Вычисление выражений в дополнение к уже имеющимся логическим проверкам (индексированное представление, индексы XML и пространственные индексы) производится только в том случае, если задан параметр EXTENDED_LOGICAL_CHECKS.Only when EXTENDED_LOGICAL_CHECKS option is specified will the expression evaluations be performed in addition to already present logical checks (indexed view, XML indexes, and spatial indexes) as part of the EXTENDED_LOGICAL_CHECKS option.

  • Если уровень совместимости меньше либо равен 90 (SQL Server 2005SQL Server 2005) и не указан параметр NOINDEX, DBCC CHECKTABLE выполняет как физические, так и логические проверки целостности отдельной таблицы или индексированного представления и всех его некластеризованных и XML-индексов.If the compatibility level is 90 (SQL Server 2005SQL Server 2005) or less, unless NOINDEX is specified, DBCC CHECKTABLE performs both physical and logical consistency checks on a single table or indexed view and on all its nonclustered and XML indexes. Пространственные индексы не поддерживаются.Spatial indexes are not supported.

Определение уровня совместимости базы данных To learn the compatibility level of a database
Просмотр или изменение уровня совместимости базы данныхView or Change the Compatibility Level of a Database

Моментальный снимок внутренней базы данныхInternal Database Snapshot

Для обеспечения согласованности транзакций, необходимой для выполнения этих проверок, инструкция DBCC CHECKTABLE использует внутренний моментальный снимок базы данных.DBCC CHECKTABLE uses an internal database snapshot to provide the transactional consistency that it must have to perform these checks. Дополнительные сведения см. в статье Просмотр размера разреженного файла снимка базы данных (Transact-SQL) и разделе "Использование внутреннего моментального снимка базы данных в командах DBCC" статьи DBCC (Transact-SQL).For more information, see View the Size of the Sparse File of a Database Snapshot (Transact-SQL) and the "DBCC Internal Database Snapshot Usage" section in DBCC (Transact-SQL). Если моментальный снимок не может быть создан или указана подсказка TABLOCK, инструкция DBCC CHECKTABLE запрашивает совмещаемую блокировку таблицы, чтобы обеспечить необходимую согласованность.If a snapshot cannot be created, or TABLOCK is specified, DBCC CHECKTABLE acquires a shared table lock to obtain the required consistency.

Примечание

Если инструкция DBCC CHECKTABLE выполняется для базы данных tempdb, она должна использовать разделяемую блокировку таблицы.If DBCC CHECKTABLE is run against tempdb, it must acquire a shared table lock. Это обусловлено тем, что по соображениям, связанным с производительностью, моментальные снимки базы данных недоступны для базы данных tempdb.This is because, for performance reasons, database snapshots are not available on tempdb. Это означает, что нельзя достичь требуемой согласованности транзакций.This means that the required transactional consistency cannot be obtained.

Проверка и восстановление данных FILESTREAMChecking and Repairing FILESTREAM Data

Если для базы данных и таблицы включен режим FILESTREAM, то существует возможность хранения больших двоичных объектов (BLOB) типа varbinary(max) в файловой системе.When FILESTREAM is enabled for a database and table, you can optionally store varbinary(max) binary large objects (BLOBs) in the file system. При использовании инструкции DBCC CHECKTABLE для таблицы, хранящей данные типа BLOB в файловой системе, DBCC проверяет согласованность между файловой системой и базой данных на уровне ссылок.When using DBCC CHECKTABLE on a table that stores BLOBs in the file system, DBCC checks link-level consistency between the file system and database. Например, если столбец таблицы типа varbinary(max) использует атрибут FILESTREAM, инструкция DBCC CHECKTABLE проверит, находятся ли файлы и каталоги файловой системы в сопоставлении один к одному со столбцами, строками и значениями строк таблицы.For example, if a table contains a varbinary(max) column that uses the FILESTREAM attribute, DBCC CHECKTABLE will check that there is a one-to-one mapping between file system directories and files and table rows, columns, and column values. DBCC CHECKTABLE может исправить повреждения при задании параметра REPAIR_ALLOW_DATA_LOSS.DBCC CHECKTABLE can repair corruption if you specify the REPAIR_ALLOW_DATA_LOSS option. При восстановлении повреждений FILESTREAM инструкция DBCC удаляет все строки таблиц, в которых отсутствуют данные файловой системы, а также все каталоги и файлы, которые не сопоставлены строкам, столбцам и значениям столбцов в таблицах.To repair FILESTREAM corruption, DBCC will delete any table rows that are missing file system data and will delete any directories and files that do not map to a table row, column, or column value.

Проверка объектов в параллельном режимеChecking Objects in Parallel

По умолчанию инструкция DBCC CHECKTABLE выполняет проверку объектов параллельно.By default, DBCC CHECKTABLE performs parallel checking of objects. Степень параллелизма определяется автоматически обработчиком запросов.The degree of parallelism is automatically determined by the query processor. Максимальная степень параллелизма настраивается точно так же, как и для параллельных запросов.The maximum degree of parallelism is configured in the same manner as that of parallel queries. Чтобы ограничить максимальное число процессоров, доступных для проверки DBCC, используйте процедуру sp_configure.To restrict the maximum number of processors available for DBCC checking, use sp_configure. Дополнительные сведения см. в разделе Настройка параметра конфигурации сервера max degree of parallelism.For more information, see Configure the max degree of parallelism Server Configuration Option. Параллельную проверку можно отключить с помощью флага трассировки 2528.Parallel checking can be disabled by using trace flag 2528. Дополнительные сведения см. в разделе Флаги трассировки (Transact-SQL).For more information, see Trace Flags (Transact-SQL).

Примечание

Во время выполнения операции DBCC CHECKTABLE байты, сохраненные в столбце побайтно упорядоченного определяемого пользователем типа, должны совпасть с вычисленной сериализацией значения пользовательского типа.During a DBCC CHECKTABLE operation, the bytes that are stored in a byte-ordered user-defined type column must be equal to the computed serialization of the user-defined type value. В противном случае процедура DBCC CHECKTABLE сообщит о несогласованности.If this is not true, the DBCC CHECKTABLE routine will report a consistency error.

Основные сведения о сообщениях об ошибках DBCCUnderstanding DBCC Error Messages

После завершения выполнения инструкции DBCC CHECKTABLE заносится сообщение в журнал ошибок SQL ServerSQL Server.After the DBCC CHECKTABLE command finishes, a message is written to the SQL ServerSQL Server error log. При успешном выполнении команды DBCC сообщается об успешном завершении и количестве времени, затраченном на выполнение команды.If the DBCC command successfully executes, the message indicates a successful completion and the amount of time that the command ran. Если выполнение команды DBCC прерывается до завершения проверки по причине ошибки, сообщение указывает на прерывание команды и приводит значение состояния и количество времени, затраченного на выполнение команды.If the DBCC command stops before completing the check because of an error, the message indicates the command was terminated, a state value, and the amount of time the command ran. В следующей таблице перечислены и описаны значения состояний, которые могут быть включены в сообщение.The following table lists and describes the state values that can be included in the message.

СостояниеState ОписаниеDescription
00 Возникла ошибка с номером 8930.Error number 8930 was raised. Это указывает на повреждение метаданных, вызвавшее прекращение выполнения команды DBCC.This indicates a metadata corruption that caused the DBCC command to terminate.
11 Возникла ошибка с номером 8967.Error number 8967 was raised. Внутренняя ошибка DBCC.There was an internal DBCC error.
22 При аварийном восстановлении базы данных произошла ошибка.A failure occurred during emergency mode database repair.
33 Это указывает на повреждение метаданных, вызвавшее прекращение выполнения команды DBCC.This indicates a metadata corruption that caused the DBCC command to terminate.
44 Обнаружено нарушение доступа или утверждения.An assert or access violation was detected.
55 Возникла неизвестная ошибка, которая привела к прекращению выполнения команды DBCC.An unknown error occurred that terminated the DBCC command.

Отчет об ошибкахError Reporting

Всякий раз при обнаружении командой DBCC CHECKTABLE ошибки повреждения данных в папке LOG SQL ServerSQL Server создается мини-файл дампа (SQLDUMP*nnnn*.txt).A mini-dump file (SQLDUMP*nnnn*.txt) is created in the SQL ServerSQL Server LOG directory whenever DBCC CHECKTABLE detects a corruption error. Если для экземпляра SQL ServerSQL Server включены функции сбора данных об использовании компонентов и отчетов об ошибках, этот файл автоматически отправляется в корпорацию MicrosoftMicrosoft.When the Feature Usage data collection and Error Reporting features are enabled for the instance of SQL ServerSQL Server, the file is automatically forwarded to MicrosoftMicrosoft. Собранные данные используются для улучшения функциональности SQL ServerSQL Server.The collected data is used to improve SQL ServerSQL Server functionality. Файл дампа содержит результаты выполнения инструкции DBCC CHECKTABLE и дополнительные диагностические сведения.The dump file contains the results of the DBCC CHECKTABLE command and additional diagnostic output. Доступ к этому файлу ограничен списками управления доступом на уровне пользователей.The file has restricted discretionary access-control lists (DACLs). Доступ ограничен учетной записью службы SQL ServerSQL Server и членами роли sysadmin.Access is limited to the SQL ServerSQL Server service account and members of the sysadmin role. По умолчанию роль sysadmin содержит всех членов группы Windows BUILTIN\Administrators и группы локальных администраторов.By default, the sysadmin role contains all members of the Windows BUILTIN\Administrators group and the local administrator's group. В случае ошибки процесса сбора данных команда DBCC не завершается ошибкой.The DBCC command does not fail if the data collection process fails.

Разрешение ошибокResolving Errors

Если инструкция DBCC CHECKTABLE выдает какие-либо ошибки, рекомендуется восстановить базу данных из резервной копии, а не запускать параметр REPAIR с параметрами исправления ошибок.If DBCC CHECKTABLE reports any errors, we recommend restoring the database from the database backup instead of running REPAIR with one of the REPAIR options. Если резервная копия отсутствует, исправить выданные ошибки можно запуском параметра REPAIR.If no backup exists, running REPAIR can correct the errors that are reported. В конце списка ошибок указано, какой из параметров REPAIR следует использовать.The REPAIR option to use is specified at the end of the list of reported errors. Однако исправление ошибок с параметром REPAIR_ALLOW_DATA_LOSS может потребовать удаления некоторых страниц, которые могут содержать данные.However, that correcting the errors by using the REPAIR_ALLOW_DATA_LOSS option might require that some pages, and therefore data, be deleted.
Исправление ошибок может быть выполнено в пользовательской транзакции, позволяя откатить произведенные изменения.The repair can be performed under a user transaction to allow the user to roll back the changes that have been made. При выполнении отката исправлений база данных снова будет содержать ошибки и ее необходимо будет восстановить из резервной копии.If repairs are rolled back, the database will still contain errors and must be restored from a backup. После завершения исправления всех ошибок создайте резервную копию базы данных.After you have completed all repairs, back up the database.

Результирующие наборыResult Sets

Инструкция DBCC CHECKTABLE возвращает следующий результирующий набор.DBCC CHECKTABLE returns the following result set. Тот же результирующий набор возвращается как при указании только имени таблицы, так и при указании любых параметров.The same result set is returned if you specify only the table name or any of the options.

DBCC results for 'HumanResources.Employee'.    
There are 288 rows in 13 pages for object 'Employee'.    
DBCC execution completed. If DBCC printed error messages, contact your system administrator.    

Инструкция DBCC CHECKTABLE возвращает следующий результирующий набор, если указан параметр ESTIMATEONLY:DBCC CHECKTABLE returns the following result set if the ESTIMATEONLY option is specified:

Estimated TEMPDB space needed for CHECKTABLES (KB)     
--------------------------------------------------     
21    
(1 row(s) affected)    
DBCC execution completed. If DBCC printed error messages, contact your system administrator.    

РазрешенияPermissions

Пользователь должен быть либо владельцем таблицы, либо членом предопределенной роли сервера sysadmin, предопределенной роли базы данных db_owner или предопределенной роли базы данных db_ddladmin.User must own the table, or be a member of the sysadmin fixed server role, the db_owner fixed database role, or the db_ddladmin fixed database role.

ПримерыExamples

A.A. Проверка указанной таблицыChecking a specific table

В приведенном ниже примере производится проверка целостности страниц данных таблицы HumanResources.Employee в базе данных AdventureWorks2012AdventureWorks2012.The following example checks the data page integrity of the HumanResources.Employee table in the AdventureWorks2012AdventureWorks2012 database.

DBCC CHECKTABLE ('HumanResources.Employee');    
GO    

Б.B. Выполнение облегченной проверки таблицыPerforming a low-overhead check of the table

В приведенном ниже примере производится упрощенная проверка таблицы Employee в базе данных AdventureWorks2012AdventureWorks2012.The following example performs a low overhead check of the Employee table in the AdventureWorks2012AdventureWorks2012 database.

DBCC CHECKTABLE ('HumanResources.Employee') WITH PHYSICAL_ONLY;    
GO    

В.C. Проверка указанного индексаChecking a specific index

В следующем примере производится проверка указанного индекса, полученного из sys.indexes.The following example checks a specific index, obtained by accessing sys.indexes.

DECLARE @indid int;    
SET @indid = (SELECT index_id     
              FROM sys.indexes    
              WHERE object_id = OBJECT_ID('Production.Product')    
                    AND name = 'AK_Product_Name');    
DBCC CHECKTABLE ('Production.Product',@indid);    

См. также:See Also

DBCC (Transact-SQL) DBCC (Transact-SQL)
DBCC CHECKDB (Transact-SQL)DBCC CHECKDB (Transact-SQL)