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

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

Проверяет логическую и физическую целостность всех объектов в указанной базе данных путем выполнения следующих операций.Checks the logical and physical integrity of all the objects in the specified database by performing the following operations:

  • Выполнение инструкции DBCC CHECKALLOC для базы данных.Runs DBCC CHECKALLOC on the database.
  • Выполнение инструкции DBCC CHECKTABLE для каждой таблицы и каждого представления в базе данных.Runs DBCC CHECKTABLE on every table and view in the database.
  • Выполнение инструкции DBCC CHECKCATALOG для базы данных.Runs DBCC CHECKCATALOG on the database.
  • Проверка содержимого каждого индексированного представления в базе данных.Validates the contents of every indexed view in the database.
  • Проверка согласованности между файлами и директориями файловой системы и метаданными таблицы на уровне ссылок при хранении данных varbinary(max) в файловой системе с помощью FILESTREAM.Validates link-level consistency between table metadata and file system directories and files when storing varbinary(max) data in the file system using FILESTREAM.
  • Проверка данных компонента Компонент Service BrokerService Broker в базе данных.Validates the Компонент Service BrokerService Broker data in the database.

Из этого следует, что не требуется дополнительно вызывать инструкции DBCC CHECKALLOC, DBCC CHECKTABLE и DBCC CHECKCATALOG при использовании инструкции DBCC CHECKDB.This means that the DBCC CHECKALLOC, DBCC CHECKTABLE, or DBCC CHECKCATALOG commands do not have to be run separately from DBCC CHECKDB. Дополнительные сведения о проверках, выполняемых этими командами, см. в описании данных команд.For more detailed information about the checks that these commands perform, see the descriptions of these commands.

Примечание

DBCC CHECKDB поддерживается для баз данных, содержащих таблицы, оптимизированные для памяти, но проверка происходит только для таблиц на дисках.DBCC CHECKDB is supported on databases that contain memory-optimized tables but validation only occurs on disk-based tables. Однако в процессе резервного копирования и восстановления базы данных проверка CHECKSUM выполняется и для файлов в группах, оптимизированных для памяти.However, as part of database backup and recovery, a CHECKSUM validation is done for files in memory-optimized filegroups.

Так как варианты восстановления DBCC недоступны для таблиц, оптимизированных для памяти, необходимо регулярно создавать и проверять резервные копии баз данных.Since DBCC repair options are not available for memory-optimized tables, you must back up your databases regularly and test the backups. Если возникают проблемы целостности данных таблицы для памяти, необходимо восстановить ее из последней рабочей резервной копии.If data integrity issues occur in a memory-optimized table, you must restore from the last known good backup.

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

СинтаксисSyntax

DBCC CHECKDB     
    [ ( database_name | database_id | 0    
        [ , NOINDEX     
        | , { 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

database_name | database_id | 0database_name | database_id | 0
Имя или идентификатор базы данных, для которой необходимо выполнить проверку целостности.Is the name or ID of the database for which to run integrity checks. Если значение не указано или указано значение 0, используется текущая база данных.If not specified, or if 0 is specified, the current database is used. Имена баз данных должны соответствовать правилам идентификаторов.Database 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 integrity checks are always performed on system table indexes.

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILDREPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
Указывает, что инструкция DBCC CHECKDB должна исправить обнаруженные ошибки.Specifies that DBCC CHECKDB repair the found errors. Используйте аргументы REPAIR только как последнее средство.Use the REPAIR options only as a last resort. Для применения описанных ниже параметров исправления указанная база данных должна находиться в однопользовательском режиме.The specified database must be in single-user mode to use one of the following repair options.

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

Предупреждение

Параметр REPAIR_ALLOW_DATA_LOSS поддерживается, но это не всегда наилучший вариант для приведения базы данных в физически согласованное состояние.The REPAIR_ALLOW_DATA_LOSS option is a supported feature but it may not always be the best option for bringing a database to a physically consistent state. В случае успеха параметр REPAIR_ALLOW_DATA_LOSS может повлечь утрату некоторых данных.If successful, the REPAIR_ALLOW_DATA_LOSS option may result in some data loss. Более того, объем утраченных данных может быть большим, чем при восстановлении базы данных из последней проверенной рабочей резервной копии данных.In fact, it may result in more data lost than if a user were to restore the database from the last known good backup.

MicrosoftMicrosoft всегда рекомендует восстановление пользователем из последней проверенной рабочей резервной копии данных в качестве основного метода для восстановления после ошибок DBCC CHECKDB.always recommends a user restore from the last known good backup as the primary method to recover from errors reported by DBCC CHECKDB. Параметр REPAIR_ALLOW_DATA_LOSS не является альтернативой восстановлению из проверенной рабочей резервной копии.The REPAIR_ALLOW_DATA_LOSS option is not an alternative for restoring from a known good backup. Это последнее средство, которое следует использовать лишь тогда, когда восстановление из резервной копии невозможно.It is an emergency “last resort” option recommended for use only if restoring from a backup is not possible.

Некоторые ошибки, которые можно исправить только с использованием параметра REPAIR_ALLOW_DATA_LOSS, могут включать освобождение строк, страниц или набора страниц, чтобы очистить ошибки.Certain errors, that can only be repaired using the REPAIR_ALLOW_DATA_LOSS option, may involve deallocating a row, page, or series of pages to clear the errors. Освобожденные данные больше не являются доступными или восстановимыми для пользователя, точное содержимое освобожденных данных нельзя определить.Any deallocated data is no longer accessible or recoverable for the user, and the exact contents of the deallocated data cannot be determined. Таким образом, целостность данных может быть нарушена после освобождения любых строк или страниц, поскольку ограничения внешнего ключа не проверяются и не поддерживаются в этой операции восстановления.Therefore, referential integrity may not be accurate after any rows or pages are deallocated because foreign key constraints are not checked or maintained as part of this repair operation. Пользователь должен проверить целостность базы данных (с помощью инструкции DBCC CHECKCONSTRAINTS) после использования REPAIR_ALLOW_DATA_LOSS.The user must inspect the referential integrity of their database (using DBCC CHECKCONSTRAINTS) after using the REPAIR_ALLOW_DATA_LOSS option.

Перед восстановлением создайте физические копии файлов, принадлежащих к этой базе данных.Before performing the repair, create physical copies of the files that belong to this database. Сюда входят первичный файл данных (.mdf), любые вторичные файлы данных (.ndf), все файлы журнала транзакций (.ldf) и другие контейнеры, которые формируют базу данных, в том числе полнотекстовые каталоги, папки потока файлов, оптимизированные для памяти данные и т. д.This includes the primary data file (.mdf), any secondary data files (.ndf), all transaction log files (.ldf), and other containers that form the database including full text catalogs, file stream folders, memory optimized data, etc.

Перед восстановлением можно изменить состояние базы данных на EMERGENCY, попытаться извлечь как можно больше информации из важных таблиц и сохранить эти данные.Before performing the repair, consider changing the state of the database to EMERGENCY mode and trying to extract as much information possible from the critical tables and save that data.

REPAIR_FASTREPAIR_FAST
Синтаксис поддерживается только для обеспечения обратной совместимости.Maintains syntax 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.

Важно!

Поскольку операции DBCC CHECKDB с любыми параметрами REPAIR полностью заносятся в журнал и поддерживают восстановление, MicrosoftMicrosoft всегда рекомендует пользователям использовать CHECKDB с любыми параметрами REPAIR в рамках транзакции (выполните BEGIN TRANSACTION перед запуском команды), чтобы можно было подтвердить, принимать ли результаты операции.Since DBCC CHECKDB with any of the REPAIR options are completely logged and recoverable, MicrosoftMicrosoft always recommends a user use CHECKDB with any REPAIR options within a transaction (execute BEGIN TRANSACTION before running the command) so that the user can confirm he/she wants to accept the results of the operation. Затем пользователь может выполнить инструкцию COMMIT TRANSACTION для фиксации всей работы, выполненной операцией восстановления.Then the user can execute COMMIT TRANSACTION to commit all work done by the repair operation. Если пользователь не принимает результаты этой операции, он может выполнить операцию ROLLBACK TRANSACTION, чтобы отменить результаты восстановления.If the user does not want to accept the results of the operation, he/she can execute a ROLLBACK TRANSACTION to undo the effects of the repair operations.

Для устранения ошибок рекомендуется восстановление из резервной копии.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 CHECKDB без параметра восстановления, чтобы узнать требуемый уровень восстановления.If you must use REPAIR, run DBCC CHECKDB without a repair option to find the repair level to use. При использовании уровня REPAIR_ALLOW_DATA_LOSS, рекомендуется создать резервную копию базы данных перед выполнением инструкции DBCC CHECKDB с этим параметром.If you use the REPAIR_ALLOW_DATA_LOSS level, we recommend that you back up the database before you run DBCC CHECKDB with this option.

ALL_ERRORMSGSALL_ERRORMSGS
Отображает все сформированные для объекта ошибки.Displays all reported errors per object. Все сообщения об ошибках выводятся по умолчанию.All error messages are displayed by default. Указание или пропуск этого параметра не приводит к изменениям.Specifying or omitting this option has no effect. Сообщения об ошибках, за исключением сообщений, формируемых базой данных tempdb, сортируются по идентификатору объекта.Error messages are sorted by object ID, except for those messages generated from tempdb database.

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 CHECKDB блокировок вместо использования внутреннего моментального снимка базы данных.Causes DBCC CHECKDB to obtain locks instead of using an internal database snapshot. Это включает краткосрочное использование монопольной блокировки (X) на базу данных.This includes a short-term exclusive (X) lock on the database. Аргумент TABLOCK позволит инструкции DBCC CHECKDB быстрее выполняться на базе данных, находящейся под интенсивной нагрузкой, однако уменьшит возможности одновременной работы пользователей с базой данных во время выполнения инструкции DBCC CHECKDB.TABLOCK will cause DBCC CHECKDB to run faster on a database under heavy load, but decreases the concurrency available on the database while DBCC CHECKDB is running.

Важно!

Аргумент TABLOCK ограничивает выполняемые проверки; инструкция DBCC CHECKCATALOG не выполняется в базе данных, а данные компонента Компонент Service BrokerService Broker останутся непроверенными.TABLOCK limits the checks that are performed; DBCC CHECKCATALOG is not run on the database, and Компонент Service BrokerService Broker data is not validated.

ESTIMATEONLYESTIMATEONLY
Отображает оценочный объем пространства в базе данных tempdb, необходимый для выполнения инструкции DBCC CHECKDB со всеми остальными заданными параметрами.Displays the estimated amount of tempdb space that is required to run DBCC CHECKDB with all the other specified options. Сама проверка базы данных не выполняется.The actual database check is not performed.

PHYSICAL_ONLYPHYSICAL_ONLY
Ограничивает проверку лишь проверкой целостности физической структуры страниц и заголовков записей и целостности выделения пространства в базе данных.Limits the checking to the integrity of the physical structure of the page and record headers and the allocation consistency of the database. Эта проверка служит для выполнения проверки физической согласованности базы данных с низкими накладными расходами на выполнение. Она может обнаруживать обрывы страниц, ошибки контрольной суммы и типичные сбои оборудования, которые могут привести к повреждению пользовательских данных.This check is designed to provide a small overhead check of the physical consistency of the database, but it can also detect torn pages, checksum failures, and common hardware failures that can compromise a user's data.
Полное выполнение инструкции DBCC CHECKTABLE может занять значительно больше времени, чем в предыдущих версиях.A full run of DBCC CHECKDB may take considerably longer to complete than earlier versions. Это происходит по следующим причинам.This behavior occurs because:

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

Предупреждение

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

DATA_PURITYDATA_PURITY
Указание значения аргумента приводит к выполнению инструкцией DBCC CHECKDB проверки базы данных на недействительность или выход из допустимого диапазона значений столбцов.Causes DBCC CHECKDB to check the database for column values that are not valid or out-of-range. Например, инструкция DBCC CHECKDB будет обнаруживать столбцы со значениями даты и времени, выходящими за допустимый диапазон значений типа данных datetime, либо столбцы типа данных decimal или приблизительных числовых типов данных с недопустимыми значениями масштаба или точности.For example, DBCC CHECKDB 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 CHECKDB с параметром DATA_PURITY.For databases upgraded from earlier versions of SQL ServerSQL Server, column-value checks are not enabled by default until DBCC CHECKDB WITH DATA_PURITY has been run error free on the database. После этого инструкция DBCC CHECKDB проверяет целостность данных в столбцах по умолчанию.After this, DBCC CHECKDB checks column-value integrity by default. Дополнительные сведения о том, как на выполнение инструкции CHECKDB влияет использование баз данных, обновленных из предыдущих версий SQL ServerSQL Server, см. в подразделе «Замечания» далее в этом разделе.For more information about how CHECKDB might be affected by upgrading database from earlier versions of SQL ServerSQL Server, see the Remarks section later in this topic.

Предупреждение

Если указан аргумент PHYSICAL_ONLY, проверка целостности значений в столбцах не выполняется.If PHYSICAL_ONLY is specified, column-integrity checks are not performed.

Ошибки проверки, передаваемые при наличии этого параметра, не могут быть устранены с помощью параметров восстановления 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.

MAXDOPMAXDOP
Применимо к: SQL ServerSQL ServerSQL Server 2014 (12.x)SQL Server 2014 (12.x) с пакетом обновления 2 (SP2) по SQL Server 2017SQL Server 2017).Applies to: SQL ServerSQL Server ( 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, компонент Компонент SQL Server Database EngineSQL Server Database Engine использует значение MAXDOP из Resource Governor, как описано в статье ALTER WORKLOAD GROUP.If MAXDOP exceeds the value configured with Resource Governor, the Компонент SQL Server Database EngineSQL Server Database Engine uses the Resource Governor MAXDOP value, described in ALTER WORKLOAD GROUP. Все семантические правила, используемые параметром конфигурации 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 равно нулю, то SQL Server выбирает максимальную степень параллелизма.If MAXDOP is set to zero then SQL Server chooses the max degree of parallelism to use.

RemarksRemarks

Инструкция DBCC CHECKDB не анализирует отключенные индексы.DBCC CHECKDB does not examine disabled indexes. Дополнительные сведения об отключенных индексах см. в статье Отключение индексов и ограничений.For more information about disabled indexes, see Disable Indexes and Constraints.

Если определяемый пользователем тип помечен как упорядоченный по байтам, должна быть выполнена только одна сериализация определяемого пользователем типа.If a user-defined type is marked as being byte ordered, there must only be one serialization of the user-defined type. Невыполнение согласованной сериализации побайтно упорядоченных типов, определяемых пользователем, приведет к возникновению ошибки 2537 при запуске инструкции DBCC CHECKDB.Not having a consistent serialization of byte-ordered user-defined types causes error 2537 when DBCC CHECKDB is run. Дополнительные сведения см. в статье Создание определяемых пользователем типов — требования.For more information, see User-Defined Type Requirements.

Так как база данных Resource доступна для изменения только в однопользовательском режиме, выполнить команду DBCC CHECKDB непосредственно для нее невозможно.Because the Resource database is modifiable only in single-user mode, the DBCC CHECKDB command cannot be run on it directly. Однако при выполнении инструкции DBCC CHECKDB для базы данных master происходит автоматический повторный запуск инструкций CHECKDB для базы данных Resource.However, when DBCC CHECKDB is executed against the master database, a second CHECKDB is also run internally on the Resource database. Поэтому инструкция DBCC CHECKDB может вернуть дополнительные результаты.This means that DBCC CHECKDB can return extra results. Эта команда возвратит дополнительные результирующие наборы, если не указано параметров или указан один из параметров PHYSICAL_ONLY или ESTIMATEONLY.The command returns extra result sets when no options are set, or when either the PHYSICAL_ONLY or ESTIMATEONLY option is set.

Начиная с SQL Server 2005SQL Server 2005 с пакетом обновления 2 (SP2) выполнение команды DBCC CHECKDB больше не очищает кэш планов для экземпляра SQL ServerSQL Server.Starting with SQL Server 2005SQL Server 2005 SP2, executing DBCC CHECKDB no longer clears the plan cache for the instance of SQL ServerSQL Server. До версии SQL Server 2005SQL Server 2005 с пакетом обновления 2 (SP2) выполнение команды DBCC CHECKDB очищает кэш планов.Before SQL Server 2005SQL Server 2005 SP2, executing DBCC CHECKDB clears the plan cache. Очистка кэша планов становится причиной перекомпиляции всех последующих планов выполнения и может приводить к непредвиденному временному снижению производительности обработки запросов.Clearing the plan cache causes recompilation of all later execution plans and may cause a sudden, temporary decrease in query performance.

Выполнение проверок логической целостности индексов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 CHECKDB выполняет как физические, так и логические проверки целостности отдельной таблицы и всех ее некластеризованных индексов.Unless NOINDEX is specified, DBCC CHECKDB 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.
  • Если уровень совместимости меньше либо равен 90 и не указан параметр NOINDEX, инструкция DBCC CHECKDB выполняет как физические, так и логические проверки целостности отдельной таблицы или индексированного представления и всех его некластеризованных и XML-индексов.If the compatibility level is 90 or less, unless NOINDEX is specified, DBCC CHECKDB 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.
  • Начиная с SQL Server 2016 дополнительные проверки материализованных вычисляемых столбцов, столбцов пользовательских типов и фильтруемых индексов по умолчанию не выполняются во избежание ресурсоемких вычислений выражений.Starting with SQL Server 2016, 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.

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

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

Инструкция DBCC CHECKDB использует внутренний моментальный снимок базы данных для обеспечения согласованности транзакций, необходимой для выполнения данных проверок.DBCC CHECKDB uses an internal database snapshot for the transactional consistency needed to perform these checks. Тем самым предотвращаются проблемы блокировки и параллелизма при выполнении этих команд.This prevents blocking and concurrency problems when these commands are executed. Дополнительные сведения см. в статье Просмотр размера разреженного файла снимка базы данных (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 CHECKDB получает блокировки для обеспечения требуемой согласованности данных.If a snapshot cannot be created, or TABLOCK is specified, DBCC CHECKDB acquires locks to obtain the required consistency. В таком случае для проверки выделенных ресурсов необходима монопольная блокировка базы данных, а для проверки таблиц — разделяемая блокировка таблицы.In this case, an exclusive database lock is required to perform the allocation checks, and shared table locks are required to perform the table checks. Инструкция DBCC CHECKDB завершается со сбоем при обработке базы данных master, если не удается создать моментальный снимок внутренней базы данных.DBCC CHECKDB fails when run against master if an internal database snapshot cannot be created. Инструкция DBCC CHECKDB для базы данных tempdb не выполняет проверок выделения пространства и проверок каталогов, а также требует совмещенных блокировок таблиц для выполнения их проверок.Running DBCC CHECKDB against tempdb does not perform any allocation or catalog checks and must acquire shared table locks to perform table checks. Это обусловлено тем, что по соображениям, связанным с производительностью, моментальные снимки базы данных недоступны для базы данных tempdb.This is because, for performance reasons, database snapshots are not available on tempdb. Это означает, что нельзя достичь требуемой согласованности транзакций.This means that the required transactional consistency cannot be obtained. В Microsoft SQL Server 2012 и более ранних версиях SQL Server могут выводиться сообщения об ошибках при выполнении команды DBCC CHECKDB применительно к базе данных, файлы которой находятся в томе с файловой системой ReFS.In Microsoft SQL Server 2012 or an earlier version of SQL Server, you may encounter error messages when you run the DBCC CHECKDB command for a database that has its files located on an ReFS-formatted volume. Дополнительные сведения см. в статье 2974455 базы знаний: Поведение DBCC CHECKDB в случае, если база данных SQL Server находится в томе ReFS.For more information, see Knowledge Base article 2974455: DBCC CHECKDB behavior when the SQL Server database is located on an ReFS volume.

Проверка и восстановление данных 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 CHECKDB для базы данных, хранящей данные типа больших двоичных объектов в файловой системе, эта инструкция проверяет согласованность на уровне ссылок между файловой системой и базой данных.When using DBCC CHECKDB on a database that stores BLOBs in the file system, DBCC checks link-level consistency between the file system and database. Например, если столбец таблицы типа varbinary(max) использует атрибут FILESTREAM, инструкция DBCC CHECKDB проверит, находятся ли файлы и каталоги файловой системы в сопоставлении один к одному со столбцами, строками и значениями строк таблицы.For example, if a table contains a varbinary(max) column that uses the FILESTREAM attribute, DBCC CHECKDB will check that there is a one-to-one mapping between file system directories and files and table rows, columns, and column values. Инструкция DBCC CHECKDB может исправить повреждения при указании параметра REPAIR_ALLOW_DATA_LOSS.DBCC CHECKDB 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.

РекомендацииBest Practices

При частом использовании на рабочих системах рекомендуется указывать параметр PHYSICAL_ONLY.We recommend that you use the PHYSICAL_ONLY option for frequent use on production systems. Использование параметра PHYSICAL_ONLY может сильно сократить время выполнения инструкции DBCC CHECKDB для больших баз данных.Using PHYSICAL_ONLY can greatly shorten run-time for DBCC CHECKDB on large databases. Также рекомендуется периодически выполнять инструкцию DBCC CHECKDB без параметров.We also recommend that you periodically run DBCC CHECKDB with no options. Насколько часто необходимо это делать, зависит от факторов, индивидуальных для каждого предприятия и каждой рабочей среды.How frequently you should perform these runs depends on individual businesses and their production environments.

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

По умолчанию инструкция DBCC CHECKDB выполняет параллельную проверку объектов.By default, DBCC CHECKDB performs parallel checking of objects. Степень параллелизма определяется автоматически обработчиком запросов.The degree of parallelism is automatically determined by the query processor. Максимальная степень параллелизма настраивается так же, как и в параллельных запросах.The maximum degree of parallelism is configured just like 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).

Примечание

Эта функция поддерживается не во всех выпусках SQL ServerSQL Server.This feature is not available in every edition of SQL ServerSQL Server. Дополнительные сведения см. в подразделе "Проверка согласованности параллелизма" раздела "Управление СУРБД" в статье Возможности, поддерживаемые различными выпусками SQL Server 2016.For more information, see parallel consistency check in the RDBMS Manageability section of Features Supported by the Editions of SQL Server 2016.

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

После завершения выполнения команды DBCC CHECKDB в журнал ошибок SQL ServerSQL Server записывается сообщение.After the DBCC CHECKDB command finishes, a message is written to the SQL ServerSQL Server error log. Если команда DBCC выполнена успешно, сообщение указывает на успешное завершение и содержит время, в течение которого выполнялась команда.If the DBCC command successfully executes, the message indicates success 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 that 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 corruption in metadata that terminated the DBCC command.
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 corruption in metadata that terminated the DBCC command.
44 Обнаружено нарушение доступа или утверждения.An assert or access violation was detected.
55 Возникла неизвестная ошибка, которая привела к прекращению выполнения команды DBCC.An unknown error occurred that terminated the DBCC command.

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

Файл дампа (SQLDUMP*nnnn*.txt) создается в каталоге SQL ServerSQL Server LOG каждый раз, когда инструкция DBCC CHECKDB обнаруживает ошибку повреждения данных.A dump file (SQLDUMP*nnnn*.txt) is created in the SQL ServerSQL Server LOG directory whenever DBCC CHECKDB 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 CHECKDB и дополнительные диагностические сведения.The dump file contains the results of the DBCC CHECKDB command and additional diagnostic output. Доступ ограничен учетной записью службы 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 CHECKDB сообщает об ошибках, вместо выполнения REPAIR с каким-либо из параметров REPAIR рекомендуется восстановить базу данных из резервной копии.If any errors are reported by DBCC CHECKDB, 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 corrects the errors reported. В конце списка ошибок указано, какой из параметров REPAIR следует использовать.The repair option to use is specified at the end of the list of reported errors. Однако при исправлении ошибок с использованием параметра REPAIR_ALLOW_DATA_LOSS может потребоваться удаление некоторых страниц и некоторых данных.However, correcting the errors by using the REPAIR_ALLOW_DATA_LOSS option might require deleting some pages, and therefore some data.

При некоторых обстоятельствах в базу данных могут быть введены значения, недействительные или выходящие за допустимый диапазон значений типа данных столбца.Under some circumstances, values might be entered into the database that are not valid or out-of-range based on the data type of the column. Инструкция DBCC CHECKDB может обнаруживать значения в столбцах, недопустимые для типов данных столбцов.DBCC CHECKDB can detect column values that are not valid for all column data types. Поэтому выполнение инструкции DBCC CHECKDB с параметром DATA_PURITY для баз данных, обновленных с предыдущих версий SQL ServerSQL Server, может обнаружить существовавшие ранее ошибки значений в столбцах.Therefore, running DBCC CHECKDB with the DATA_PURITY option on databases that have been upgraded from earlier versions of SQL ServerSQL Server might reveal preexisting column-value errors. Поскольку SQL ServerSQL Server не может автоматически исправить эти ошибки, значения в столбцах необходимо обновить вручную.Because SQL ServerSQL Server cannot automatically repair these errors, the column value must be manually updated. Если инструкция CHECKDB обнаруживает такую ошибку, она возвращает предупреждение, сообщение об ошибке 2570 и сведения, позволяющие найти вызвавшую ошибку строку и исправить ошибку вручную.If CHECKDB detects such an error, CHECKDB returns a warning, the error number 2570, and information to identify the affected row and manually correct the error.

Это исправление может быть выполнено в пользовательской транзакции, позволяющей пользователю выполнить откат сделанных изменений.The repair can be performed under a user transaction to let the user roll back the changes that were made. При выполнении отката исправлений база данных снова будет содержать ошибки и ее необходимо будет восстановить из резервной копии.If repairs are rolled back, the database will still contain errors and must be restored from a backup. После завершения исправлений создайте резервную копию базы данных.After repairs are completed, back up the database.

Разрешение ошибок в аварийном режиме базы данныхResolving Errors in Database Emergency Mode

Если база данных переведена в аварийный режим с помощью инструкции ALTER DATABASE, инструкция DBCC CHECKDB с указанным параметром REPAIR_ALLOW_DATA_LOSS может выполнять некоторые специальные действия по восстановлению базы данных.When a database has been set to emergency mode by using the ALTER DATABASE statement, DBCC CHECKDB can perform some special repairs on the database if the REPAIR_ALLOW_DATA_LOSS option is specified. Эти действия по восстановлению могут позволить перевести обычно невосстановимые базы данных в рабочий режим в физически согласованном состоянии.These repairs may allow for ordinarily unrecoverable databases to be brought back online in a physically consistent state. Эти действия должны использоваться только в исключительных случаях и только когда восстановление базы данных из резервной копии невозможно.These repairs should be used as a last resort and only when you cannot restore the database from a backup. Если база данных переведена в аварийный режим, она помечается как находящаяся в режиме READ_ONLY, запись в журнал отключается, а доступ разрешен лишь для членов предопределенной роли сервера sysadmin.When the database is set to emergency mode, the database is marked READ_ONLY, logging is disabled, and access is limited to members of the sysadmin fixed server role.

Примечание

В аварийном режиме невозможно выполнить инструкцию DBCC CHECKDB в пользовательской транзакции и выполнить откат транзакции после выполнения.You cannot run the DBCC CHECKDB command in emergency mode inside a user transaction and roll back the transaction after execution.

Когда база данных находится в аварийном режиме и выполняется инструкция DBCC CHECKDB с предложением REPAIR_ALLOW_DATA_LOSS, выполняются следующие действия.When the database is in emergency mode and DBCC CHECKDB with the REPAIR_ALLOW_DATA_LOSS clause is run, the following actions are taken:

  • Инструкция DBCC CHECKDB использует страницы, помеченные как недоступные, из-за ошибок ввода-вывода или ошибок проверки контрольной суммы, как если бы этих ошибок не было.DBCC CHECKDB uses pages that have been marked inaccessible because of I/O or checksum errors, as if the errors have not occurred. В результате повышается возможность восстановления данных.Doing this increases the chances for data recovery from the database.
  • Инструкция DBCC CHECKDB пытается восстановить базу данных, используя стандартные методы восстановления, основанные на журналах.DBCC CHECKDB attempts to recover the database using regular log-based recovery techniques.
  • Если восстановление базы данных заканчивается неуспешно из-за повреждения журнала транзакций, этот журнал будет перестроен.If, because of transaction log corruption, database recovery is unsuccessful, the transaction log is rebuilt. Перестроение журнала транзакций может приводить к потере согласованности транзакций.Rebuilding the transaction log may result in the loss of transactional consistency.

Предупреждение

Параметр REPAIR_ALLOW_DATA_LOSS является поддерживаемой функцией SQL ServerSQL Server.The REPAIR_ALLOW_DATA_LOSS option is a supported feature of SQL ServerSQL Server. Но это не всегда наилучший вариант для приведения базы данных в физически согласованное состояние.However, it may not always be the best option for bringing a database to a physically consistent state. В случае успеха параметр REPAIR_ALLOW_DATA_LOSS может повлечь утрату некоторых данных.If successful, the REPAIR_ALLOW_DATA_LOSS option may result in some data loss. Более того, объем утраченных данных может быть большим, чем при восстановлении базы данных из последней проверенной рабочей резервной копии данных.In fact, it may result in more data lost than if a user were to restore the database from the last known good backup. MicrosoftMicrosoft всегда рекомендует восстановление пользователем из последней проверенной рабочей резервной копии данных в качестве основного метода для восстановления после ошибок DBCC CHECKDB.always recommends a user restore from the last known good backup as the primary method to recover from errors reported by DBCC CHECKDB. Параметр REPAIR_ALLOW_DATA_LOSS не является альтернативой восстановлению из проверенной рабочей резервной копии.The REPAIR_ALLOW_DATA_LOSS option is not an alternative for restoring from a known good backup. Это последнее средство, которое следует использовать лишь тогда, когда восстановление из резервной копии невозможно.It is an emergency “last resort” option recommended for use only if restoring from a backup is not possible.

После перестроения журнала не гарантируется полное соблюдение принципа ACID.After rebuilding the log, there is no full ACID guarantee.

После перестроения журнала будет автоматически выполнена инструкция DBCC CHECKDB, будут устранены ошибки в отчетах и ошибки физической согласованности.After rebuilding the log, DBCC CHECKDB will be automatically performed and will both report and correct physical consistency issues.

Согласованность логических данных и принудительные ограничения бизнес-логики необходимо проверить вручную.Logical data consistency and business logic enforced constraints must be validated manually.

Размер журнала транзакций останется заданным по умолчанию. Нужно будет вручную установить последний размер.The transaction log size will be left to its default size and must be manually adjusted back to its recent size.

Если инструкция DBCC CHECKDB выполнена успешно, значит, база данных находится в физически согласованном состоянии и переведена в режим ONLINE.If the DBCC CHECKDB command succeeds, the database is in a physically consistent state and the database status is set to ONLINE. Однако база данных может содержать одну или больше противоречивых транзакций.However, the database may contain one or more transactional inconsistencies. Рекомендуется выполнить инструкцию DBCC CHECKCONSTRAINTS, чтобы обнаружить дефекты бизнес-логики и незамедлительно создать резервную копию базы данных.We recommend that you run DBCC CHECKCONSTRAINTS to identify any business logic flaws and immediately back up the database. Если выполнение инструкции DBCC CHECKDB завершилось неудачей, база данных не может быть восстановлена.If the DBCC CHECKDB command fails, the database cannot be repaired.

Выполнение инструкции DBCC CHECKDB с параметром REPAIR_ALLOW_DATA_LOSS для реплицируемых баз данныхRunning DBCC CHECKDB with REPAIR_ALLOW_DATA_LOSS in Replicated Databases

Выполнение инструкции DBCC CHECKDB с параметром REPAIR_ALLOW_DATA_LOSS может затронуть используемые репликацией пользовательские базы данных (базы данных подписок и публикаций) и базу данных распространителя.Running the DBCC CHECKDB command with the REPAIR_ALLOW_DATA_LOSS option can affect user databases (publication and subscription databases) and the distribution database used by replication. Базы данных подписки и публикации включают опубликованные таблицы и таблицы метаданных репликации.Publication and subscription databases include published tables and replication metadata tables. Учитывайте следующие возможные проблемы при работе с этими базами данных.Be aware of the following potential issues in these databases:

  • Опубликованные таблицы.Published tables. Действия, выполненные процессом CHECKDB по восстановлению пользовательских данных, могут быть не реплицированы.Actions performed by the CHECKDB process to repair corrupt user data might not be replicated:
  • При репликации слиянием используются триггеры, чтобы отследить изменения в опубликованных таблицах.Merge replication uses triggers to track changes to published tables. Если процессом CHECKDB были вставлены, обновлены или удалены строки, триггеры не сработают; поэтому изменения не будут реплицированы.If rows are inserted, updated, or deleted by the CHECKDB process, triggers do not fire; therefore, the change is not replicated.
  • При репликации транзакций используется журнал транзакций, чтобы отследить изменения в опубликованных таблицах.Transactional replication uses the transaction log to track changes to published tables. Затем агент чтения журнала перемещает эти изменения в базу данных распространителя.The Log Reader Agent then moves these changes to the distribution database. Некоторые операции восстановления DBCC не могут быть реплицированы агентом чтения журнала, несмотря на то, что журналируются.Some DBCC repairs, although logged, cannot be replicated by the Log Reader Agent. Например, если страница данных освобождена процессом CHECKDB, агент чтения журнала не преобразует это действие в инструкцию DELETE; поэтому изменение не будет реплицировано.For example, if a data page is deallocated by the CHECKDB process, the Log Reader Agent does not translate this to a DELETE statement; therefore, the change is not replicated.
  • Таблицы метаданных репликации.Replication metadata tables. Действия, выполняемые процессом CHECKDB по восстановлению поврежденных таблиц метаданных репликации, требуют удаления и повторной настройки репликации.Actions performed by the CHECKDB process to repair corrupt replication metadata tables require removing and reconfiguring replication.

Если инструкция DBCC CHECKDB запущена с параметром REPAIR_ALLOW_DATA_LOSS для базы данных пользователя или базы данных распространителя, выполните следующие действия.If you have to run the DBCC CHECKDB command with the REPAIR_ALLOW_DATA_LOSS option on a user database or distribution database:

  1. Приостановите систему: остановите выполнение операций с базой данных и со всеми другими базами данных, которые участвуют в топологии репликации, а затем попытайтесь синхронизировать все узлы.Quiesce the system: Stop activity on the database and at all other databases in the replication topology, and then try to synchronize all nodes. Дополнительные сведения см. в разделе Замораживание топологии репликации (программирование репликации на языке Transact-SQL).For more information, see Quiesce a Replication Topology (Replication Transact-SQL Programming).
  2. Выполните инструкцию DBCC CHECKDB.Execute DBCC CHECKDB.
  3. Если отчет инструкции DBCC CHECKDB включает действия по восстановлению каких-либо таблиц в базе данных распространителя или таблиц метаданных репликации в пользовательской базе данных, удалите и заново настройте репликацию.If the DBCC CHECKDB report includes repairs for any tables in the distribution database or any replication metadata tables in a user database, remove and reconfigure replication. Дополнительные сведения см. в статье Отключение публикации и распространения.For more information, see Disable Publishing and Distribution.
  4. Если отчет инструкции DBCC CHECKDB включает действия по восстановлению каких-либо реплицируемых таблиц, выполните проверку данных, чтобы определить, имеются ли различия между данными в базах данных подписки и публикации.If the DBCC CHECKDB report includes repairs for any replicated tables, perform data validation to determine whether there are differences between the data in the publication and subscription databases.

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

Инструкция DBCC CHECKDB возвращает следующий результирующий набор.DBCC CHECKDB returns the following result set. Значения могут различаться, кроме случаев, когда указаны параметры ESTIMATEONLY, PHYSICAL_ONLY или NO_INFOMSGS.The values might vary except when the ESTIMATEONLY, PHYSICAL_ONLY, or NO_INFOMSGS options are specified:

 DBCC results for 'model'.    

 Service Broker Msg 9675, Level 10, State 1: Message Types analyzed: 13.    

 Service Broker Msg 9676, Level 10, State 1: Service Contracts analyzed: 5.    

 Service Broker Msg 9667, Level 10, State 1: Services analyzed: 3.    

 Service Broker Msg 9668, Level 10, State 1: Service Queues analyzed: 3.    

 Service Broker Msg 9669, Level 10, State 1: Conversation Endpoints analyzed: 0.    

 Service Broker Msg 9674, Level 10, State 1: Conversation Groups analyzed: 0.    

 Service Broker Msg 9670, Level 10, State 1: Remote Service Bindings analyzed: 0.    

 DBCC results for 'sys.sysrowsetcolumns'.    

 There are 630 rows in 7 pages for object 'sys.sysrowsetcolumns'.    

 DBCC results for 'sys.sysrowsets'.    

 There are 97 rows in 1 pages for object 'sys.sysrowsets'.    

 DBCC results for 'sysallocunits'.    

 There are 195 rows in 3 pages for object 'sysallocunits'.    

 There are 0 rows in 0 pages for object "sys.sysasymkeys".    

 DBCC results for 'sys.syssqlguides'.    

 There are 0 rows in 0 pages for object "sys.syssqlguides".    

 DBCC results for 'sys.queue_messages_1977058079'.    

 There are 0 rows in 0 pages for object "sys.queue_messages_1977058079".    

 DBCC results for 'sys.queue_messages_2009058193'.    

 There are 0 rows in 0 pages for object "sys.queue_messages_2009058193".    

 DBCC results for 'sys.queue_messages_2041058307'.    

 There are 0 rows in 0 pages for object "sys.queue_messages_2041058307".    

 CHECKDB found 0 allocation errors and 0 consistency errors in database 'model'.    

 DBCC execution completed. If DBCC printed error messages, contact your system administrator.    

Инструкция DBCC CHECKDB возвращает следующий результирующий набор (сообщение) при указании атрибута NO_INFOMSGS:DBCC CHECKDB returns the following result set (message) when NO_INFOMSGS is specified:

 The command(s) completed successfully.

Инструкция DBCC CHECKDB возвращает следующий результирующий набор при указании атрибута PHYSICAL_ONLY:DBCC CHECKDB returns the following result set when PHYSICAL_ONLY is specified:

 DBCC results for 'model'.    

 CHECKDB found 0 allocation errors and 0 consistency errors in database 'master'.  

 DBCC execution completed. If DBCC printed error messages, contact your system administrator.

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

 Estimated TEMPDB space needed for CHECKALLOC (KB)    

 -------------------------------------------------  

 13   

 (1 row(s) affected)   

 Estimated TEMPDB space needed for CHECKTABLES (KB)    

 --------------------------------------------------    

 57 

 (1 row(s) affected)  

 DBCC execution completed. If DBCC printed error messages, contact your system administrator.

РазрешенияPermissions

Необходимо быть членом предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner.Requires membership in the sysadmin fixed server role or the db_owner fixed database role.

ПримерыExamples

A.A. Проверка текущей базы данных и другой базы данныхChecking both the current and another database

В следующем примере выполняется инструкция DBCC CHECKDB для текущей базы данных и для базы данных AdventureWorks2012AdventureWorks2012.The following example executes DBCC CHECKDB for the current database and for the AdventureWorks2012AdventureWorks2012 database.

-- Check the current database.    
DBCC CHECKDB;    
GO    
-- Check the AdventureWorks2012 database without nonclustered indexes.    
DBCC CHECKDB (AdventureWorks2012, NOINDEX);    
GO    

Б.B. Проверка текущей базы данных с подавлением информационных сообщенийChecking the current database, suppressing informational messages

Следующий пример проверяет текущую базу данных и подавляет все информационные сообщения.The following example checks the current database and suppresses all informational messages.

DBCC CHECKDB WITH NO_INFOMSGS;    
GO    

См. также:See Also

DBCC (Transact-SQL)DBCC (Transact-SQL)
Просмотр размера разреженного файла снимка базы данных (Transact-SQL)View the Size of the Sparse File of a Database Snapshot (Transact-SQL)
sp_helpdb (Transact-SQL)sp_helpdb (Transact-SQL)
Системные таблицы (Transact-SQL)System Tables (Transact-SQL)