DBCC DBREINDEX (Transact-SQL)DBCC DBREINDEX (Transact-SQL)

SE APLICA A: síSQL Server (a partir de 2008) noAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2008) noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Vuelve a generar uno o varios índices de una tabla de la base de datos especificada.Rebuilds one or more indexes for a table in the specified database.

Importante

Esta característica se quitará en una versión futura de Microsoft SQL Server.This feature will be removed in a future version of Microsoft SQL Server. No utilice esta característica en nuevos trabajos de desarrollo y modifique lo antes posible las aplicaciones que actualmente la utilizan.Do not use this feature in new development work, and modify applications that currently use this feature as soon as possible. Use ALTER INDEX en su lugar.Use ALTER INDEX instead.

Se aplica a: SQL ServerSQL Server (desde SQL Server 2008SQL Server 2008 hasta la versión actual)Applies to: SQL ServerSQL Server ( SQL Server 2008SQL Server 2008 through current version)

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

SintaxisSyntax

DBCC DBREINDEX   
(   
    table_name   
    [ , index_name [ , fillfactor ] ]  
)  
    [ WITH NO_INFOMSGS ]   

ArgumentosArguments

table_nametable_name
Es el nombre de la tabla que contiene los índices especificados que se van a volver a generar.Is the name of the table containing the specified index or indexes to rebuild. Los nombres de las tablas deben seguir las reglas de los identificadores.Table names must follow the rules for identifiers.

index_nameindex_name
Es el nombre del índice que se va a volver a generar.Is the name of the index to rebuild. Los nombres de los índices deben ajustarse a las reglas de los identificadores.Index names must comply with the rules for identifiers. Si se especifica index_name, debe especificarse table_name.If index_name is specified, table_name must be specified. Si no se especifica index_name o se indica como " ", se recompilan todos los índices de la tabla.If index_name is not specified or is " ", all indexes for the table are rebuilt.

fillfactorfillfactor
Es el porcentaje de espacio de cada página de índice que se utiliza para almacenar los datos cuando el índice se crea o se vuelve a generar.Is the percentage of space on each index page for storing data when the index is created or rebuilt. fillfactor reemplaza al factor de relleno usado al crear el índice y se convierte en el nuevo valor predeterminado para el índice y para cualquier otro índice no agrupado que se recompile como consecuencia de la recompilación de un índice agrupado.fillfactor replaces the fill factor when the index was created, becoming the new default for the index and for any other nonclustered indexes rebuilt because a clustered index is rebuilt.
Cuando fillfactor es 0, DBCC DBREINDEX usa el último valor del factor de relleno que se ha especificado para el índice.When fillfactor is 0, DBCC DBREINDEX uses the fill factor value last specified for the index. Este valor se almacena en la vista de catálogo sys.indexes.This value is stored in the sys.indexes catalog view.
Si se especifica fillfactor, debe especificarse table_name e index_name.If fillfactor is specified, table_name and index_name must be specified. Si no se especifica fillfactor, se usa el factor de relleno predeterminado (100).If fillfactor is not specified, the default fill factor, 100, is used. Para obtener más información, vea Especificar el factor de relleno para un índice.For more information, see Specify Fill Factor for an Index.

WITH NO_INFOMSGSWITH NO_INFOMSGS
Suprime todos los mensajes informativos con niveles de gravedad entre 0 y 10.Suppresses all informational messages that have severity levels from 0 through 10.

NotasRemarks

DBCC DBREINDEX vuelve a generar un índice de una tabla o todos los índices definidos de una tabla.DBCC DBREINDEX rebuilds an index for a table or all indexes defined for a table. Al permitir que los índices se vuelvan a generar dinámicamente, los índices que implementen restricciones PRIMARY KEY o UNIQUE se pueden volver a generar sin tener que quitar y volver a crear las restricciones.By allowing an index to be rebuilt dynamically, indexes enforcing either PRIMARY KEY or UNIQUE constraints can be rebuilt without having to drop and re-create those constraints. Esto significa que un índice puede volver a generarse sin conocer la estructura de una tabla ni sus restricciones.This means that an index can be rebuilt without knowing the structure of a table or its constraints. Esto puede suceder después de copiar datos de forma masiva en la tabla.This might occur after a bulk copy of data into the table.

DBCC DBREINDEX puede volver a generar todos los índices para una tabla en una instrucción.DBCC DBREINDEX can rebuild all the indexes for a table in one statement. Es más sencillo que codificar varias instrucciones DROP INDEX y CREATE INDEX.This is easier than coding multiple DROP INDEX and CREATE INDEX statements. Como todo el trabajo se hace con una instrucción, DBCC DBREINDEX es, automáticamente, una acción atómica, mientras que, para ser atómicas, las instrucciones DROP INDEX y CREATE INDEX individuales deben formar parte de una transacción.Because the work is performed by one statement, DBCC DBREINDEX is automatically atomic, whereas individual DROP INDEX and CREATE INDEX statements must be included in a transaction to be atomic. Además, DBCC DBREINDEX ofrece más optimizaciones que las instrucciones DROP INDEX y CREATE INDEX individuales.Also, DBCC DBREINDEX offers more optimizations than individual DROP INDEX and CREATE INDEX statements.

A diferencia de DBCC INDEXDEFRAG o ALTER INDEX, con la opción REORGANIZE, DBCC DBREINDEX es una operación sin conexión.Unlike DBCC INDEXDEFRAG, or ALTER INDEX with the REORGANIZE option, DBCC DBREINDEX is an offline operation. Si se vuelve a generar un índice no clúster, se mantiene un bloqueo compartido en la tabla en cuestión durante la operación.If a nonclustered index is being rebuilt, a shared lock is held on the table in question for the duration of the operation. Esto evita que se modifique la tabla.This prevents modifications to the table. Si el índice clúster se vuelve a generar, se mantiene un bloqueo de tabla exclusivo.If the clustered index is being rebuilt, an exclusive table lock is held. Así se evita cualquier acceso a la tabla, haciendo que la tabla esté sin conexión.This prevents any table access, therefore effectively making the table offline. Utilice la instrucción ALTER INDEX REBUILD con la opción ONLINE para volver a agregar un índice en línea o para controlar el grado de paralelismo durante la operación de regeneración del índice.To perform an index rebuild online, or to control the degree of parallelism during the index rebuild operation, use the ALTER INDEX REBUILD statement with the ONLINE option.

Para más información sobre cómo seleccionar un método para recompilar o reorganizar un índice, vea Reorganizar y volver a generar índices.For more information about selecting a method to rebuild or reorganize an index, see Reorganize and Rebuild Indexes .

RestrictionsRestrictions

No se admite el uso de DBCC DBREINDEX en los objetos siguientes:DBCC DBREINDEX is not supported for use on the following objects:

  • Tablas del sistemaSystem tables
  • Índices espacialesSpatial indexes
  • índices de almacén de columnas optimizados de memoria xVelocityxVelocity memory optimized columnstore indexes

Conjuntos de resultadosResult Sets

A menos que se especifique NO_INFOMSGS (se debe especificar el nombre de la tabla), DBCC DBREINDEX siempre devuelve:Unless NO_INFOMSGS is specified (the table name must be specified), DBCC DBREINDEX always returns:

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

PermisosPermissions

El autor de la llamada debe ser el 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.Caller 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. Volver a generar un índiceRebuilding an index

En este ejemplo se vuelve a generar el índice clúster Employee_EmployeeID con un factor de relleno de 80 en la tabla Employee de la base de datos AdventureWorks.The following example rebuilds the Employee_EmployeeID clustered index with a fill factor of 80 on the Employee table in the AdventureWorks database.

USE AdventureWorks2012;   
GO  
DBCC DBREINDEX ('HumanResources.Employee', PK_Employee_BusinessEntityID,80);  
GO  

b.B. Volver a generar todos los índicesRebuilding all indexes

En este ejemplo se vuelven a generar todos los índices de la tabla Employee de AdventureWorks con un valor de factor de relleno de 70.The following example rebuilds all indexes on the Employee table in AdventureWorks by using a fill factor value of 70.

USE AdventureWorks2012;   
GO  
DBCC DBREINDEX ('HumanResources.Employee', ' ', 70);  
GO  

Consulte tambiénSee Also

ALTER TABLE (Transact-SQL)ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)CREATE TABLE (Transact-SQL)
DBCC (Transact-SQL)DBCC (Transact-SQL)
sys.indexes (Transact-SQL)sys.indexes (Transact-SQL)
sys.dm_db_index_physical_stats (Transact-SQL)sys.dm_db_index_physical_stats (Transact-SQL)
ALTER INDEX (Transact-SQL)ALTER INDEX (Transact-SQL)