Habilitar índices y restricciones
En este tema se describe cómo habilitar un índice deshabilitado en SQL Server 2012 mediante SQL Server Management Studio o Transact-SQL. Cuando se deshabilita un índice, sigue deshabilitado hasta que se vuelve a generar o se quita.
En este tema
Antes de empezar:
Limitaciones y restricciones
Seguridad
Para habilitar un índice deshabilitado, use:
SQL Server Management Studio
Transact-SQL
Antes de empezar
Limitaciones y restricciones
Después de volver a generar el índice, deben volver a habilitarse manualmente las restricciones deshabilitadas debido a la deshabilitación del índice. Las restricciones PRIMARY KEY y UNIQUE se habilitan cuando se regenera el índice asociado. Este índice debe volver a generarse (habilitarse) para poder habilitar las restricciones FOREIGN KEY que hacen referencia a la restricción PRIMARY KEY o UNIQUE. Las restricciones FOREIGN KEY se habilitan con la instrucción ALTER TABLE CHECK CONSTRAINT.
No es posible volver a generar un índice clúster deshabilitado si la opción ONLINE está establecida 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 clúster
Índice no clúster deshabilitado…
ALTER INDEX REBUILD.
Sigue deshabilitado.
ALTER INDEX ALL REBUILD.
Se vuelve a generar y se habilita.
DROP INDEX.
Sigue deshabilitado.
CREATE INDEX WITH DROP_EXISTING.
Sigue deshabilitado.
La creación de un índice clúster 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 del índice no clúster
Cuando los índices clúster y no clúster están deshabilitados.
Cuando el índice clúster está habilitado y el índice no clúster está deshabilitado o habilitado.
ALTER INDEX REBUILD.
Se produce un error en la acción.
La acción se realiza correctamente.
DROP INDEX.
La acción se realiza correctamente.
La acción se realiza correctamente.
CREATE INDEX WITH DROP_EXISTING.
Se produce un error en la acción.
La acción se realiza correctamente.
Seguridad
Permisos
Requiere el permiso ALTER en la tabla o la vista. Si se utiliza DBCC DBREINDEX, el usuario debe ser el propietario de la tabla o debe ser miembro del rol fijo de servidor sysadmin o de los roles fijos de base de datos db_ddladmin y db_owner.
[Arriba]
Usar SQL Server Management Studio
Para habilitar un índice deshabilitado
En el Explorador de objetos, haga clic en el signo más para expandir la base de datos que contiene la tabla en la que desea habilitar un índice.
Haga clic en el signo más para expandir la carpeta Tablas.
Haga clic en el signo más para expandir la tabla en la que desea habilitar un índice.
Haga clic en el signo más para expandir la carpeta Índices.
Haga clic con el botón secundario en el índice que desee habilitar y seleccione Volver a generar.
En el cuadro de diálogo Volver a generar índices, compruebe que el índice correcto se encuentra en la cuadrícula Índices que se volverán a generar y haga clic en Aceptar.
Para habilitar todos los índices de una tabla
En el Explorador de objetos, haga clic en el signo más para expandir la base de datos que contiene la tabla en la que desea habilitar los índices.
Haga clic en el signo más para expandir la carpeta Tablas.
Haga clic en el signo más para expandir la tabla en la que desea habilitar los índices.
Haga clic con el botón secundario en la carpeta Índices y seleccione Volver a generar todo.
En el cuadro de diálogo Volver a generar índices, compruebe que los índices correctos se encuentran en la cuadrícula Índices que se volverán a generar y haga clic en 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:
[Arriba]
Usar Transact-SQL
Para habilitar un índice deshabilitado mediante ALTER INDEX
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.
En la barra de Estándar, haga clic en Nueva consulta.
Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar.
USE AdventureWorks2012; GO -- Enables the IX_Employee_OrganizationLevel_OrganizationNode index -- on the HumanResources.Employee table. ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee REBUILD; GO
Para habilitar un índice deshabilitado mediante CREATE INDEX
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.
En la barra de Estándar, haga clic en Nueva consulta.
Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar.
USE AdventureWorks2012; GO -- re-creates the IX_Employee_OrganizationLevel_OrganizationNode index -- on the HumanResources.Employee table -- using the OrganizationLevel and OrganizationNode columns -- and then deletes the existing IX_Employee_OrganizationLevel_OrganizationNode index CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee (OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON); GO
Para habilitar un índice deshabilitado mediante DBCC DBREINDEX
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.
En la barra de Estándar, haga clic en Nueva consulta.
Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar.
USE AdventureWorks2012; GO -- enables the IX_Employee_OrganizationLevel_OrganizationNode index -- on the HumanResources.Employee table DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode); GO
Para habilitar todos los índices de una tabla mediante ALTER INDEX
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.
En la barra de Estándar, haga clic en Nueva consulta.
Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar.
USE AdventureWorks2012; GO -- enables all indexes -- on the HumanResources.Employee table ALTER INDEX ALL ON HumanResources.Employee REBUILD; GO
Para habilitar todos los índices de una tabla mediante DBCC DBREINDEX
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.
En la barra de Estándar, haga clic en Nueva consulta.
Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar.
USE AdventureWorks2012; GO -- enables all indexes -- on the HumanResources.Employee table DBCC DBREINDEX ("HumanResources.Employee", " "); GO
Para obtener más información, vea ALTER INDEX (Transact-SQL), CREATE INDEX (Transact-SQL) y DBCC DBREINDEX (Transact-SQL).
[Arriba]