Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Instancia
administrada de Azure SQLBase de datos SQL en Microsoft Fabric
En este artículo se describe cómo habilitar un índice deshabilitado en SQL Server mediante SQL Server Management Studio o Transact-SQL. Cuando se deshabilita un índice, sigue deshabilitado hasta que se vuelve a generar o se quita.
Limitations
Después de volver a generar el índice, las restricciones que se deshabilitaron debido a la deshabilitación del índice deben habilitarse manualmente. Las restricciones PRIMARY KEY y UNIQUE se habilitan mediante la reconstrucción del índice asociado. Este índice tiene que ser reconstruido antes de poder habilitar las restricciones que hagan referencia a la restricción FOREIGN KEY o PRIMARY KEY.
FOREIGN KEY Las restricciones se habilitan mediante la ALTER TABLE CHECK CONSTRAINT instrucción .
No se puede reconstruir un índice agrupado deshabilitado cuando la opción ONLINE está configurada en ON.
Si el índice clúster está deshabilitado o habilitado y el índice no clúster está deshabilitado, la acción del índice clúster tiene los siguientes resultados en el índice no clúster deshabilitado.
| Acción del índice agrupado | Estado del índice no agrupado deshabilitado |
|---|---|
ALTER INDEX REBUILD |
Permanece deshabilitado |
ALTER INDEX ALL REBUILD |
Reconstruido y habilitado |
DROP INDEX |
Reconstruido y habilitado |
CREATE INDEX WITH DROP_EXISTING |
Permanece deshabilitado |
La creación de un nuevo índice agrupado se comporta igual que ALTER INDEX ALL REBUILD.
Las acciones permitidas en índices no clúster asociados con un índice clúster dependen del estado, deshabilitado o habilitado, de ambos tipos de índice. La tabla siguiente resume las acciones permitidas en índices no clúster.
| Acción de índice no agrupado | Cuando los índices agrupados y no agrupados están deshabilitados | Cuando el índice clúster está habilitado y el índice no clúster está en cualquier estado |
|---|---|---|
ALTER INDEX REBUILD |
Se produce un error en la acción | La acción tiene éxito |
DROP INDEX |
La acción tiene éxito | La acción tiene éxito |
CREATE INDEX WITH DROP_EXISTING |
Se produce un error en la acción | La acción tiene éxito |
Al regenerar índices no agrupados comprimidos y deshabilitados, data_compression por defecto se establece en none, lo que significa que los índices están sin comprimir. Esto se debe a que los metadatos de configuración de compresión se pierden al deshabilitar los índices no agrupados. Para solucionar este problema, debe especificar la compresión de datos explícita en la instrucción rebuild.
Permissions
Debe tener un permiso de ALTER sobre la tabla o vista. Si usa DBCC DBREINDEX, debe ser propietario de la tabla o ser miembro del rol fijo de servidor sysadmin, o miembro de uno de los roles fijos de base de datos db_ddladmin o db_owner.
Uso de SQL Server Management Studio
Habilitación de un índice deshabilitado
En el Explorador de objetos, seleccione el signo más para expandir la base de datos que contiene la tabla en la que desea habilitar un índice.
Selecciona el signo más para expandir la carpeta Tablas.
Seleccione el signo más para expandir la tabla en la que desea habilitar un índice.
Seleccione el signo más para expandir la carpeta Índices .
Haga clic con el botón derecho en el índice que quiera habilitar y seleccione Volver a generar.
En el cuadro de diálogo Recompilar índices , compruebe que el índice correcto está en la cuadrícula Índices para recompilar y seleccione Aceptar.
Habilitación de todos los índices de una tabla
En el Explorador de objetos, seleccione el signo más para expandir la base de datos que contiene la tabla en la que desea habilitar los índices.
Selecciona el signo más para expandir la carpeta Tablas.
Seleccione el signo más para expandir la tabla en la que desea habilitar los índices.
Haga clic con el botón derecho en la carpeta Índices y seleccione Volver a generar todo.
En el cuadro de diálogo Recompilar índices , compruebe que los índices correctos están en la cuadrícula Índices para recompilar y seleccione Aceptar. Para quitar un índice de la cuadrícula Índices que se volverán a generar , seleccione el índice y, a continuación, presione la tecla SUPRIMIR.
La siguiente información está disponible en el cuadro de diálogo Volver a generar índices :
Uso de Transact-SQL
Los ejemplos de código de este artículo usan la base de datos de ejemplo de AdventureWorks2025 o AdventureWorksDW2025, que puede descargar de la página principal de Ejemplos de Microsoft SQL Server y proyectos de comunidad.
Habilitación de un índice deshabilitado mediante ALTER INDEX
Ejecute el siguiente Transact-SQL script. En este ejemplo se habilita el índice IX_Employee_OrganizationLevel_OrganizationNode en la tabla HumanResources.Employee.
USE AdventureWorks2022;
GO
ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee REBUILD;
GO
Habilitación de un índice deshabilitado mediante CREATE INDEX
Ejecute el siguiente Transact-SQL script. En este ejemplo, se recrea el índice IX_Employee_OrganizationLevel_OrganizationNode en la tabla HumanResources.Employee, utilizando las columnas OrganizationLevel y OrganizationNode, y luego se elimina el índice existente IX_Employee_OrganizationLevel_OrganizationNode.
USE AdventureWorks2022;
GO
CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee(OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON);
GO
Habilitación de un índice deshabilitado mediante DBCC DBREINDEX
Note
Esta característica se quitará en una versión futura de SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.
Ejecute el siguiente Transact-SQL script. En este ejemplo se habilita el índice IX_Employee_OrganizationLevel_OrganizationNode en la tabla HumanResources.Employee.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
GO
Habilitación de todos los índices de una tabla mediante ALTER INDEX
Ejecute el siguiente Transact-SQL script. En este ejemplo se habilitan todos los índices de la HumanResources.Employee tabla.
USE AdventureWorks2022;
GO
ALTER INDEX ALL
ON HumanResources.Employee REBUILD;
GO
Habilitación de todos los índices de una tabla mediante DBCC DBREINDEX
Note
Esta característica se quitará en una versión futura de SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.
Ejecute el siguiente Transact-SQL script. En este ejemplo se habilitan todos los índices de la HumanResources.Employee tabla.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", " ");
GO