DBCC DBREINDEX (Transact-SQL)

Vuelve a generar uno o varios índices de una tabla de la base de datos especificada.

ms181671.note(es-es,SQL.90).gifImportante:
Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Utilice ALTER INDEX en su lugar.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

  • table_name
    Es el nombre de la tabla para la que se van a volver a generar los índices especificados. Los nombres de tablas deben seguir las reglas de los identificadores. database.
  • index_name
    Es el nombre del índice que se va a volver a generar. Los nombres de índices deben cumplir las mismas reglas que los identificadores. Si se especifica index_name, se debe especificar table_name. Si no se especifica index_name o si se especifica como '', se vuelven a generar todos los índices de la tabla.
  • fillfactor
    Es el porcentaje de espacio de cada página de índice que se va a utilizar para almacenar los datos cuando el índice se cree o se vuelva a generar. fillfactor sustituye al factor de relleno cuando se creó el índice y se convierte en el nuevo valor predeterminado para el índice y para cualquier otro índice sin agrupar que se vuelva a generar porque se haya vuelto a generar un índice agrupado. Cuando fillfactor es 0, DBCC DBREINDEX utiliza el último valor del factor de relleno que se especificó para el índice. Este valor se almacena en la vista de catálogo sys.indexes.

    Si se especifica fillfactor, se debe especificar table_name e index_name. Si no se especifica fillfactor, se utiliza el factor de relleno predeterminado (100). Para obtener más información, vea Factor de relleno.

  • WITH NO_INFOMSGS
    Suprime todos los mensajes informativos cuyo nivel de gravedad está comprendido entre 0 y 10.

Conjuntos de resultados

Cuando se especifique cualquiera de las opciones salvo NO_INFOMSGS (se debe especificar el nombre de la tabla), DBCC DBREINDEX devuelve:

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

Notas

DBCC DBREINDEX vuelve a generar un índice de una tabla o todos los índices definidos de una tabla. Al permitir que los índices se vuelvan a generar dinámicamente, los índices que apliquen restricciones PRIMARY KEY o UNIQUE se pueden volver a generar sin tener que quitar y volver a crear las restricciones. Esto significa que un índice puede volverse a generar sin conocer la estructura de una tabla ni sus restricciones. Esto puede suceder después de copiar datos de forma masiva en la tabla.

DBCC DBREINDEX puede volver a generar todos los índices para una tabla en una instrucción. Es más sencillo que codificar varias instrucciones DROP INDEX y CREATE INDEX. 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. Además, con DBCC DBREINDEX se pueden aprovechar más optimizaciones que con las instrucciones DROP INDEX y CREATE INDEX individuales.

A diferencia de DBCC INDEXDEFRAG o ALTER INDEX, con la opción REORGANIZE, DBCC DBREINDEX es una operación sin conexión. Si se vuelve a generar un índice sin agrupar, se mantiene un bloqueo compartido en la tabla en cuestión durante la operación. Esto evita que se modifique la tabla. Si el índice agrupado se vuelve a generar, se mantiene un bloqueo de tabla exclusivo. Así se evita cualquier acceso a la tabla, haciendo que la tabla esté sin conexión. Utilice la instrucción ALTER INDEX REBUILD con la opción ONLINE para volver a generar un índice con conexión, o para controlar el grado de paralelismo durante la operación para volver a generar el índice.

Para obtener más información sobre cómo seleccionar un método para volver a generar o reorganizar un índice, vea Reorganizar y volver a generar índices.

No se admite el uso de DBCC DBREINDEX en las tablas del sistema.

Permisos

El autor de la llamada debe ser el propietario de la tabla o un miembro de la función fija de servidor sysadmin, de la función fija de base de datos db_owner o la de función fija de base de datos db_ddladmin.

Ejemplos

A. Volver a generar un índice

En este ejemplo se vuelve a generar el índice agrupado Employee_EmployeeID con un factor de relleno de 80 en la tabla Employee de la base de datos AdventureWorks.

USE AdventureWorks; 
GO
DBCC DBREINDEX ("HumanResources.Employee", PK_Employee_EmployeeID,80);
GO

B. Volver a generar todos los índices

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.

USE AdventureWorks; 
GO
DBCC DBREINDEX ("HumanResources.Employee", " ", 70);
GO

Vea también

Referencia

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

Otros recursos

Arquitectura de tablas e índices

Ayuda e información

Obtener ayuda sobre SQL Server 2005