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

SE APLICA A: síSQL Server síAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Comprueba la integridad de todas las páginas y estructuras que constituyen la tabla o la vista indizada.Checks the integrity of all the pages and structures that make up the table or indexed view.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

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 ]    
        }    
    ]    

ArgumentosArguments

table_name | view_nametable_name | view_name
Es la tabla o la vista indizada para la que se ejecutan las comprobaciones de integridad.Is the table or indexed view for which to run integrity checks. Los nombres de tablas y vistas deben cumplir las reglas de los identificadores.Table or view names must comply with the rules for identifiers.

NOINDEXNOINDEX
Especifica que no se deben realizar comprobaciones intensivas de índices no agrupado para las tablas de usuario.Specifies that intensive checks of nonclustered indexes for user tables should not be performed. Esto reduce el tiempo total de ejecución.This decreases the overall execution time. NOINDEX no afecta a las tablas del sistema porque las comprobaciones de integridad siempre se ejecutan en todos los índices de las tablas del sistema.NOINDEX does not affect system tables because the integrity checks are always performed on all system table indexes.

id_de_índiceindex_id
Es el número de identificación (Id.) del índice para el que se van a ejecutar las comprobaciones de integridad.Is the index identification (ID) number for which to run integrity checks. Si se especifica id_de_índice, DBCC CHECKTABLE ejecuta las comprobaciones de integridad solo en ese índice, junto con el índice de montón o el índice agrupado.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
Especifica que DBCC CHECKTABLE repare los errores que encuentre.Specifies that DBCC CHECKTABLE repair the found errors. Para utilizar una opción de reparación, la base de datos debe estar en modo de usuario único.To use a repair option, the database must be in single-user mode.

REPAIR_ALLOW_DATA_LOSSREPAIR_ALLOW_DATA_LOSS
Intenta reparar todos los errores indicados.Tries to repair all reported errors. Estas reparaciones pueden ocasionar alguna pérdida de datos.These repairs can cause some data loss.

REPAIR_FASTREPAIR_FAST
La sintaxis solo se mantiene por razones de compatibilidad con versiones anteriores.Syntax is maintained for backward compatibility only. No se realizan acciones de reparación.No repair actions are performed.

REPAIR_REBUILDREPAIR_REBUILD
Realiza reparaciones que no tienen ninguna posibilidad de pérdida de datos.Performs repairs that have no possibility of data loss. Pueden ser reparaciones rápidas, como la reparación de las filas que faltan en índices no agrupados, y reparaciones que consumen más tiempo, como regenerar un índice.This can include quick repairs, such as repairing missing rows in nonclustered indexes, and more time-consuming repairs, such as rebuilding an index.
Este argumento no repara errores relacionados con datos de FILESTREAM.This argument does not repair errors involving FILESTREAM data.

Nota

Utilice las opciones REPAIR solo como último recurso.Use the REPAIR options only as a last resort. Para reparar errores, se recomienda restaurar a partir de una copia de seguridad.To repair errors, we recommend restoring from a backup. Las operaciones de reparación no tienen en cuenta ninguna de las restricciones que puede haber en las tablas o entre ellas.Repair operations do not consider any of the constraints that may exist on or between tables. Si la tabla especificada está implicada en una o más restricciones, se recomienda ejecutar DBCC CHECKCONSTRAINTS tras una operación de reparación.If the specified table is involved in one or more constraints, we recommend running DBCC CHECKCONSTRAINTS after a repair operation. Si tiene que usar REPAIR, ejecute DBCC CHECKTABLE sin una opción de reparación para localizar el nivel de reparación que se va a usar.If you must use REPAIR, run DBCC CHECKTABLE without a repair option to find the repair level to use. Si se va a usar el nivel REPAIR_ALLOW_DATA_LOSS, se recomienda realizar una copia de seguridad de la base de datos antes de ejecutar DBCC CHECKTABLE con esta opción.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
Muestra un número ilimitado de errores.Displays an unlimited number of errors. De forma predeterminada, se muestran todos los mensajes de error.All error messages are displayed by default. Especificar u omitir esta opción no tiene ningún efecto.Specifying or omitting this option has no effect.

EXTENDED_LOGICAL_CHECKSEXTENDED_LOGICAL_CHECKS
Si el nivel de compatibilidad es 100 (SQL Server 2008SQL Server 2008) o superior, realiza comprobaciones de coherencia lógica en una vista indexada, en índices XML y en índices espaciales, en caso de que los haya.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.
Para obtener más información, vea Realizar comprobaciones de coherencia lógica en índices en la sección Comentarios más adelante en este tema.For more information, see Performing Logical Consistency Checks on Indexes in the Remarks section later in this topic.

NO_INFOMSGSNO_INFOMSGS
Suprime todos los mensajes de información.Suppresses all informational messages.

TABLOCKTABLOCK
Hace que DBCC CHECKTABLE reciba un bloqueo de tabla compartido en vez de utilizar una instantánea de base de datos interna.Causes DBCC CHECKTABLE to obtain a shared table lock instead of using an internal database snapshot. TABLOCK hará que DBCC CHECKTABLE se ejecute más rápido en una tabla con mucha carga, pero disminuirá la simultaneidad disponible sobre la tabla mientras DBCC CHECKTABLE está ejecutándose.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
Muestra la cantidad de espacio estimado de la base de datos tempdb necesario para ejecutar DBCC CHECKTABLE con todas las demás opciones especificadas.Displays the estimated amount of tempdb space needed to run DBCC CHECKTABLE with all the other specified options.

PHYSICAL_ONLYPHYSICAL_ONLY
Limita la comprobación de la integridad a la estructura física de la página, los encabezados de registro y la estructura física de árboles b.Limits the checking to the integrity of the physical structure of the page, record headers and the physical structure of B-trees. Se ha diseñado para proporcionar una pequeña comprobación de sobrecarga de la coherencia física de la tabla; esta comprobación también puede detectar páginas rasgadas y errores de hardware comunes que pueden comprometer los datos.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. Una ejecución completa de DBCC CHECKTABLE puede tardar mucho más tiempo que en versiones anteriores.A full run of DBCC CHECKTABLE may take considerably longer than in earlier versions. Este comportamiento se debe a las razones siguientes:This behavior occurs because of the following reasons:

  • Las comprobaciones lógicas son más exhaustivas.The logical checks are more comprehensive.
  • Algunas de las estructuras subyacentes que hay que comprobar son más complejas.Some of the underlying structures to be checked are more complex.
  • Se han agregado muchas comprobaciones nuevas para incluir las nuevas características.Many new checks have been introduced to include the new features.

Por tanto, el uso de la opción PHYSICAL_ONLY puede llevar mucho menos tiempo para DBCC CHECKTABLE en tablas grandes y, por ello, se recomienda para su uso frecuente en sistemas de producción.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. Aun así, se recomienda realizar periódicamente una ejecución completa DBCC CHECKTABLE.We still recommend that a full run of DBCC CHECKTABLE be performed periodically. La frecuencia de estas ejecuciones depende de factores específicos de cada empresa y de los entornos de producción.The frequency of these runs depends on factors specific to individual businesses and production environments. PHYSICAL_ONLY siempre implica NO_INFOMSGS y no se permite con ninguna de las opciones de reparación.PHYSICAL_ONLY always implies NO_INFOMSGS and is not allowed with any one of the repair options.

Nota

Si se especifica PHYSICAL_ONLY, DBCC CHECKTABLE omite todas las comprobaciones de datos de FILESTREAM.Specifying PHYSICAL_ONLY causes DBCC CHECKTABLE to skip all checks of FILESTREAM data.

DATA_PURITYDATA_PURITY
Hace que DBCC CHECKTABLE compruebe si la tabla contiene valores de columna que no son válidos o están fuera del intervalo correcto.Causes DBCC CHECKTABLE to check the table for column values that are not valid or out-of-range. Por ejemplo, DBCC CHECKTABLE detecta las columnas cuyos valores de fecha y hora son superiores o inferiores al intervalo de valores válido para el tipo de datos datetime, o bien las columnas del tipo de datos decimal o numérico aproximado con valores de escala o precisión que no son válidos.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.
Las comprobaciones de integridad de valores de columna están habilitadas de manera predeterminada y no requieren la opción DATA_PURITY.Column-value integrity checks are enabled by default and do not require the DATA_PURITY option. En las bases de datos actualizadas desde versiones anteriores de SQL ServerSQL Server, puede usar DBCC CHECKTABLE WITH DATA_PURITY para buscar y corregir errores en una tabla concreta; sin embargo, la comprobación de los valores de columnas de la tabla no se habilitan de forma predeterminada hasta que se ejecute DBCC CHECKDB WITH DATA_PURITY sin errores en la base de datos.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. Después, DBCC CHECKDB y DBCC CHECKTABLE comprueban la integridad de los valores de columnas de forma predeterminada.After this, DBCC CHECKDB and DBCC CHECKTABLE check column-value integrity by default.
Los errores de validación de los que informe esta opción no se pueden corregir con las opciones de reparación de DBCC.Validation errors reported by this option cannot be fixed by using DBCC repair options. Para obtener información acerca de cómo corregir manualmente estos errores, consulte el artículo 923247 de Knowledge Base: Resolución del error DBCC 2570 en SQL Server 2005 y versiones posteriores.For information about manually correcting these errors, see Knowledge Base article 923247: Troubleshooting DBCC error 2570 in SQL Server 2005 and later versions.
Si se especifica PHYSICAL_ONLY, no se realizan comprobaciones de integridad de columna.If PHYSICAL_ONLY is specified, column-integrity checks are not performed.

MAXDOPMAXDOP
Se aplica a: SQL ServerSQL Server (a partir de SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 hasta 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).

Invalida la opción de configuración de grado máximo de paralelismo de sp_configure para la instrucción.Overrides the max degree of parallelism configuration option of sp_configure for the statement. MAXDOP puede superar el valor configurado con sp_configure.The MAXDOP can exceed the value configured with sp_configure. Si MAXDOP supera el valor configurado con Resource Governor, el motor de base de datos usa el valor MAXDOP de Resource Governor, descrito en 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). Se pueden aplicar todas las reglas semánticas utilizadas con la opción de configuración max degree of parallelism cuando se utiliza la sugerencia de consulta MAXDOP.All semantic rules used with the max degree of parallelism configuration option are applicable when you use the MAXDOP query hint. Para obtener más información, vea Establecer la opción de configuración del servidor Grado máximo de paralelismo.For more information, see Configure the max degree of parallelism Server Configuration Option.

Nota

Si MAXDOP se establece en cero, el servidor elige el grado máximo de paralelismo.If MAXDOP is set to zero then the server chooses the max degree of parallelism.

NotasRemarks

Nota

Para ejecutar DBCC CHECKTABLE en todas las tablas de la base de datos, use DBCC CHECKDB.To perform DBCC CHECKTABLE on every table in the database, use DBCC CHECKDB.

En la tabla especificada, DBCC CHECKTABLE comprueba lo siguiente:For the specified table, DBCC CHECKTABLE checks for the following:

  • Las páginas de índice, consecutivas, de objetos grandes (LOB) y de datos de desbordamiento de fila están vinculadas correctamente.Index, in-row, LOB, and row-overflow data pages are correctly linked.
  • Los índices se encuentran en el orden correcto.Indexes are in their correct sort order.
  • Los punteros son coherentes.Pointers are consistent.
  • Los datos de cada página son razonables, incluidas las columnas calculadas.The data on each page is reasonable, included computed columns.
  • Los desplazamientos de página son razonables.Page offsets are reasonable.
  • Cada fila de la tabla base tiene una fila correspondiente en cada índice no agrupado y viceversa.Every row in the base table has a matching row in each nonclustered index, and vice-versa.
  • Todas las filas de un índice o tabla con particiones están en la partición correcta.Every row in a partitioned table or index is in the correct partition.
  • Coherencia de nivel de vínculo entre la tabla y el sistema de archivos cuando se almacenan datos varbinary(max) en el sistema de archivos mediante FILESTREAM.Link-level consistency between the file system and table when storing varbinary(max) data in the file system using FILESTREAM.

Realizar comprobaciones de coherencia lógica en índicesPerforming Logical Consistency Checks on Indexes

La comprobación de coherencia lógica en índices varía según el nivel de compatibilidad de la base de datos, tal como se indica a continuación:Logical consistency checking on indexes varies according to the compatibility level of the database, as follows:

  • Si el nivel de compatibilidad es 100 (SQL Server 2008SQL Server 2008) o superior:If the compatibility level is 100 (SQL Server 2008SQL Server 2008) or higher:

    • A menos que se especifique NOINDEX, DBCC CHECKTABLE realiza comprobaciones de coherencia física y lógica en una sola tabla y en todos sus índices no agrupado.Unless NOINDEX is specified, DBCC CHECKTABLE performs both physical and logical consistency checks on a single table and on all its nonclustered indexes. Sin embargo, en los índices XML, índices espaciales y vistas indizadas solo se realizan comprobaciones de coherencia física de forma predeterminada.However, on XML indexes, spatial indexes, and indexed views only physical consistency checks are performed by default.
    • Si se especifica WITH EXTENDED_LOGICAL_CHECKS, se realizarán comprobaciones lógicas en una vista indizada, en índices XML e índices espaciales, en caso de que los hubiese.If WITH EXTENDED_LOGICAL_CHECKS is specified, logical checks are performed on an indexed view, XML indexes, and spatial indexes, where present. De forma predeterminada, las comprobaciones de coherencia física se realizan antes que las comprobaciones de coherencia lógica.By default, physical consistency checks are performed before the logical consistency checks. Si también se especifica NOINDEX, solamente se realizarán las comprobaciones lógicas.If NOINDEX is also specified, only the logical checks are performed.
      Estas comprobaciones de coherencia lógica realizan una comprobación cruzada de la tabla de índices interna del objeto de índice con la tabla de usuario a la que hace referencia.These logical consistency checks cross check the internal index table of the index object with the user table that it is referencing. Para buscar las filas periféricas, se crea una consulta interna que lleve a cabo una intersección completa de las tablas internas y del usuario.To find outlying rows, an internal query is constructed to perform a full intersection of the internal and user tables. La ejecución de esta consulta puede afectar mucho al rendimiento y no se puede realizar el seguimiento de su progreso.Running this query can have a very high effect on performance, and its progress cannot be tracked. Por consiguiente, se recomienda especificar únicamente WITH EXTENDED_LOGICAL_CHECKS si cree que existen problemas del índice que no estén relacionados con daños físicos, o si las sumas de comprobación del nivel de página se han desactivado y sospecha que puedan existir daños de hardware de nivel de columna.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.
    • Si el índice es un índice filtrado, DBCC CHECKDB realizará las comprobaciones de coherencia para comprobar que las entradas de índice satisfacen el predicado de filtro.If the index is a filtered index, DBCC CHECKDB performs consistency checks to verify that the index entries satisfy the filter predicate.
  • A partir de SQL Server 2016 (13.x)SQL Server 2016 (13.x), no se ejecutarán de forma predeterminada comprobaciones adicionales en las columnas calculadas persistentes, las columnas UDT y los índices filtrados para evitar evaluaciones de expresiones costosas.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. Este cambio reduce considerablemente la duración de CHECKDB en bases de datos que contienen estos objetos.This change greatly reduces the duration of CHECKDB against databases containing these objects. A pesar de ello, las comprobaciones de coherencia física de estos objetos siempre se completan.However, the physical consistency checks of these objects is always completed. Solo cuando se especifica la opción EXTENDED_LOGICAL_CHECKS se realizarán las evaluaciones de expresiones además de las comprobaciones lógicas ya presentes (vista indexada, índices XML e índices espaciales) como parte de la opción 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.

  • Si el nivel de compatibilidad es 90 (SQL Server 2005 (9.x)SQL Server 2005 (9.x)) o inferior, a menos que se especifique NOINDEX, DBCC CHECKTABLE realizará las comprobaciones de coherencia física y lógica en una única tabla o vista indexada, y en todos sus índices XML y no agrupados.If the compatibility level is 90 (SQL Server 2005 (9.x)SQL Server 2005 (9.x)) 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. Los índices espaciales no se admiten.Spatial indexes are not supported.

Conocer el nivel de compatibilidad de una base de datos To learn the compatibility level of a database
Ver o cambiar el nivel de compatibilidad de una base de datosView or Change the Compatibility Level of a Database

Instantánea de base de datos internaInternal Database Snapshot

DBCC CHECKTABLE utiliza una instantánea de base de datos interna para proporcionar la coherencia transaccional que debe tener para realizar estas comprobaciones.DBCC CHECKTABLE uses an internal database snapshot to provide the transactional consistency that it must have to perform these checks. Para más información, vea Ver el tamaño del archivo disperso de una instantánea de base de datos (Transact-SQL) y la sección "Uso de comandos DBCC en instantáneas internas de la base de datos" de 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). Si no se puede crear una instantánea, o se ha especificado TABLOCK, DBCC CHECKTABLE adquiere un bloqueo de tabla compartido para lograr la coherencia requerida.If a snapshot cannot be created, or TABLOCK is specified, DBCC CHECKTABLE acquires a shared table lock to obtain the required consistency.

Nota

Si DBCC CHECKTABLE se ejecuta en tempdb, debe adquirir un bloqueo de tabla compartido.If DBCC CHECKTABLE is run against tempdb, it must acquire a shared table lock. Esto es debido a que, por motivos de rendimiento, las instantáneas de base de datos no están disponibles en tempdb.This is because, for performance reasons, database snapshots are not available on tempdb. Eso significa que no es posible obtener la coherencia transaccional necesaria.This means that the required transactional consistency cannot be obtained.

Comprobar y reparar datos de FILESTREAMChecking and Repairing FILESTREAM Data

Cuando FILESTREAM está habilitado para una base de datos y una tabla, puede almacenar opcionalmente los objetos binarios grandes (BLOB) varbinary(max) en el sistema de archivos.When FILESTREAM is enabled for a database and table, you can optionally store varbinary(max) binary large objects (BLOBs) in the file system. Al utilizar DBCC CHECKTABLE en una tabla que almacena objetos BLOB en el sistema de archivos, DBCC comprueba la coherencia de nivel de vínculo entre el sistema de archivos y la base de datos.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. Por ejemplo, si una tabla contiene una columna varbinary(max) en la que se usa el atributo FILESTREAM, DBCC CHECKTABLE comprobará que existe una asignación uno a uno entre los directorios del sistema de archivos y los archivos y filas de tabla, las columnas, y los valores de columna.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 puede reparar el daño producido si especifica la opción de REPAIR_ALLOW_DATA_LOSS.DBCC CHECKTABLE can repair corruption if you specify the REPAIR_ALLOW_DATA_LOSS option. Para reparar el daño de FILESTREAM, DBCC quitará todas las filas de tabla a las que les falten datos del sistema de archivos, así como todos los directorios y archivos no asignados a una fila de tabla, columna o valor de columna.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.

Comprobar objetos en paraleloChecking Objects in Parallel

De forma predeterminada, DBCC CHECKTABLE realiza comprobaciones paralelas de los objetos.By default, DBCC CHECKTABLE performs parallel checking of objects. El grado de paralelismo se determina automáticamente mediante el procesador de consultas.The degree of parallelism is automatically determined by the query processor. El grado de paralelismo máximo se configura de la misma forma que el de las consultas paralelas.The maximum degree of parallelism is configured in the same manner as that of parallel queries. Para restringir el número máximo de procesadores disponibles para las comprobaciones DBCC, use sp_configure.To restrict the maximum number of processors available for DBCC checking, use sp_configure. Para obtener más información, vea Establecer la opción de configuración del servidor Grado máximo de paralelismo.For more information, see Configure the max degree of parallelism Server Configuration Option. La comprobación del paralelismo se puede deshabilitar utilizando el marcador de seguimiento 2528.Parallel checking can be disabled by using trace flag 2528. Para obtener más información, vea Marcas de seguimiento (Transact-SQL).For more information, see Trace Flags (Transact-SQL).

Nota

Durante una operación DBCC CHECKTABLE, los bytes almacenados en una columna de tipo definido por el usuario ordenada por bytes deben ser iguales a la serialización calculada del valor del tipo definido por el usuario.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. Si no es así, la rutina DBCC CHECKTABLE indicará un error de coherencia.If this is not true, the DBCC CHECKTABLE routine will report a consistency error.

Descripción de los mensajes de error de DBCCUnderstanding DBCC Error Messages

Cuando finaliza el comando DBCC CHECKTABLE, se escribe un mensaje en el registro de errores de SQL ServerSQL Server.After the DBCC CHECKTABLE command finishes, a message is written to the SQL ServerSQL Server error log. Si el comando DBCC se ejecuta correctamente, el mensaje lo indica, así como el tiempo de ejecución del comando.If the DBCC command successfully executes, the message indicates a successful completion and the amount of time that the command ran. Si el comando DBCC se detiene antes de finalizar la comprobación debido a un error, el mensaje indica que el comando se ha cancelado, un valor de estado y el tiempo de ejecución del comando.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. En la tabla siguiente se muestran y describen los valores de estado que pueden aparecer en el mensaje.The following table lists and describes the state values that can be included in the message.

StateState DescripciónDescription
00 Se ha generado el error número 8930.Error number 8930 was raised. Indica un daño en los metadatos que provoca la cancelación del comando DBCC.This indicates a metadata corruption that caused the DBCC command to terminate.
11 Se ha generado el error número 8967.Error number 8967 was raised. Error DBCC interno.There was an internal DBCC error.
22 Error durante una reparación de base de datos en modo de emergencia.A failure occurred during emergency mode database repair.
33 Indica un daño en los metadatos que provoca la cancelación del comando DBCC.This indicates a metadata corruption that caused the DBCC command to terminate.
44 Se ha detectado una infracción de acceso o aserción.An assert or access violation was detected.
55 Error desconocido que cancela el comando DBCC.An unknown error occurred that terminated the DBCC command.

Informes de erroresError Reporting

Un archivo de minivolcado (SQLDUMP*nnnn*.txt) se crea en el directorio LOG de SQL ServerSQL Server cada vez que DBCC CHECKTABLE detecta un error relacionado con datos dañados.A mini-dump file (SQLDUMP*nnnn*.txt) is created in the SQL ServerSQL Server LOG directory whenever DBCC CHECKTABLE detects a corruption error. Si las características de recopilación de datos de Uso de la característica e Informes de errores están habilitadas para la instancia de SQL ServerSQL Server, el archivo se reenvía automáticamente a 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. Los datos recopilados se utilizan para mejorar la funcionalidad de SQL ServerSQL Server.The collected data is used to improve SQL ServerSQL Server functionality. El archivo de volcado contiene los resultados del comando DBCC CHECKTABLE y salida de diagnóstico adicional.The dump file contains the results of the DBCC CHECKTABLE command and additional diagnostic output. El archivo tiene listas de control de acceso discrecional (DACL) restringidas.The file has restricted discretionary access-control lists (DACLs). El acceso está limitado a la cuenta de servicio de SQL ServerSQL Server y a los miembros del rol sysadmin.Access is limited to the SQL ServerSQL Server service account and members of the sysadmin role. De forma predeterminada, el rol sysadmin contiene todos los miembros del grupo BUILTIN\Administradores de Windows y el grupo de administradores local.By default, the sysadmin role contains all members of the Windows BUILTIN\Administrators group and the local administrator's group. El comando DBCC no producirá error en caso de que se produzca un error en el proceso de recopilación de datos.The DBCC command does not fail if the data collection process fails.

Resolver erroresResolving Errors

Si DBCC CHECKTABLE informa de errores, se recomienda restaurar la base de datos de la copia de seguridad de base de datos en vez de ejecutar REPAIR con una de las opciones de 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. Si no existe una copia de seguridad, la ejecución de REPAIR puede corregir los errores indicados.If no backup exists, running REPAIR can correct the errors that are reported. La opción REPAIR que se debe utilizar se especifica al final de la lista de errores indicados.The REPAIR option to use is specified at the end of the list of reported errors. No obstante, la corrección de errores mediante la opción REPAIR_ALLOW_DATA_LOSS puede eliminar algunas páginas, y por tanto, también algunos datos.However, that correcting the errors by using the REPAIR_ALLOW_DATA_LOSS option might require that some pages, and therefore data, be deleted.
La reparación se puede realizar en una transacción de usuario para permitirle revertir los cambios que se han realizado.The repair can be performed under a user transaction to allow the user to roll back the changes that have been made. Si se revierten las reparaciones, la base de datos aún contendrá errores por lo que se debe restaurar a partir de una copia de seguridad.If repairs are rolled back, the database will still contain errors and must be restored from a backup. Una vez finalizadas todas las reparaciones, realice una copia de seguridad de la base de datos.After you have completed all repairs, back up the database.

Conjuntos de resultadosResult Sets

DBCC CHECKTABLE devuelve el siguiente conjunto de resultados.DBCC CHECKTABLE returns the following result set. Si se especifica solo el nombre de tabla o alguna de las opciones se devuelve el mismo conjunto de resultados.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.    

Si se especifica la opción ESTIMATEONLY, DBCC CHECKTABLE devuelve el siguiente conjunto de resultados: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.    

PermisosPermissions

El usuario debe ser propietario de la tabla, o bien un miembro del rol fijo de servidor sysadmin o de los roles fijos de base de datos db_owner o 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.

EjemplosExamples

A.A. Comprobar una tabla específicaChecking a specific table

En el siguiente ejemplo se comprueba la integridad de la página de datos de la tabla HumanResources.Employee de la base de datos AdventureWorks2012AdventureWorks2012.The following example checks the data page integrity of the HumanResources.Employee table in the AdventureWorks2012AdventureWorks2012 database.

DBCC CHECKTABLE ('HumanResources.Employee');    
GO    

B.B. Ejecutar una comprobación de carga baja de la tablaPerforming a low-overhead check of the table

En el ejemplo siguiente se realiza una comprobación de carga baja de la tabla Employee en la base de datos 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.C. Comprobar un índice específicoChecking a specific index

En el siguiente ejemplo se comprueba un índice específico, obtenido mediante un acceso a 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);    

Consulte tambiénSee Also

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