Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Förhandsversion av Microsoft Fabric
Den här artikeln beskriver hur du aktiverar ett inaktiverat index i SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL. När ett index har inaktiverats förblir det i inaktiverat tillstånd tills det återskapas eller tas bort.
Limitations
När indexet har återskapats måste alla begränsningar som inaktiverades på grund av inaktivering av indexet aktiveras manuellt.
PRIMARY KEY- och UNIQUE-begränsningar aktiveras genom att det associerade indexet återskapas. Det här indexet måste återskapas (aktiveras) innan du kan aktivera FOREIGN KEY begränsningar som refererar till PRIMARY KEY eller UNIQUE villkoret.
FOREIGN KEY begränsningar aktiveras med hjälp av instruktionen ALTER TABLE CHECK CONSTRAINT.
Det går inte att bygga om ett inaktiverat klustrat index när alternativet ONLINE är inställt på ON.
När det klustrade indexet är inaktiverat eller aktiverat och det icke-grupperade indexet har inaktiverats, har den klustrade indexåtgärden följande resultat på det inaktiverade icke-grupperade indexet.
| Klustrad indexåtgärd | Inaktiverad icke-grupperad indexstatus |
|---|---|
ALTER INDEX REBUILD |
Remains disabled |
ALTER INDEX ALL REBUILD |
Återuppbyggd och aktiverad |
DROP INDEX |
Återuppbyggd och aktiverad |
CREATE INDEX WITH DROP_EXISTING |
Remains disabled |
Att skapa ett nytt klustrat index fungerar på samma sätt som ALTER INDEX ALL REBUILD.
Tillåtna åtgärder för icke-grupperade index som är associerade med ett klustrat index beror på tillståndet, oavsett om det är inaktiverat eller aktiverat, av båda indextyperna. I följande tabell sammanfattas de tillåtna åtgärderna för icke-klustrade index.
| Icke-klustrad indexåtgärd | När både klustrade och icke-klustrade index är inaktiverade | När det klustrade indexet är aktiverat och det icke-grupperade indexet är i något av tillstånden |
|---|---|---|
ALTER INDEX REBUILD |
Åtgärden misslyckas | Åtgärden lyckas |
DROP INDEX |
Åtgärden lyckas | Åtgärden lyckas |
CREATE INDEX WITH DROP_EXISTING |
Åtgärden misslyckas | Åtgärden lyckas |
När du återskapar inaktiverade komprimerade icke-grupperade index är data_compression standardvärdet none, vilket innebär att indexen inte är komprimerade. Detta beror på att metadata för komprimeringsinställningar går förlorade när icke-grupperade index inaktiveras. För att undvika det här problemet måste du ange explicit datakomprimering i återskapande-instruktionen.
Permissions
Kräver ALTER behörighet i tabellen eller vyn. Om du använder DBCC DBREINDEXmåste du antingen äga tabellen eller vara medlem i den fasta serverrollen sysadmin eller vara medlem i db_ddladmin eller db_owner fasta databasroller.
Använda SQL Server Management Studio
Aktivera ett inaktiverat index
I Object Explorer väljer du plustecknet för att expandera databasen som innehåller den tabell där du vill aktivera ett index.
Välj plustecknet för att expandera mappen Tables.
Välj plustecknet för att expandera tabellen där du vill aktivera ett index.
Välj plustecknet för att expandera mappen Index.
Högerklicka på det index som du vill aktivera och välj Återskapa.
I dialogrutan Återskapa index kontrollerar du att rätt index finns i Index för att återskapa rutnät och välja OK.
Aktivera alla index i en tabell
I Object Explorer väljer du plustecknet för att expandera databasen som innehåller den tabell där du vill aktivera indexen.
Välj plustecknet för att expandera mappen Tables.
Välj plustecknet för att expandera tabellen där du vill aktivera indexen.
Högerklicka på mappen Index och välj Återskapa alla.
I dialogrutan Återskapa index kontrollerar du att rätt index finns i indexen för att återskapa rutnätet och väljer OK. Om du vill ta bort ett index från indexen för att återskapa rutnätet väljer du indexet och trycker sedan på ta bort.
Följande information är tillgänglig i dialogrutan Återskapa index :
Use Transact-SQL
Kodexemplen i den här artikeln använder AdventureWorks2022- eller AdventureWorksDW2022-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.
Aktivera ett inaktiverat index med ALTER INDEX
Kör följande Transact-SQL skript. Det här exemplet aktiverar indexet IX_Employee_OrganizationLevel_OrganizationNode i HumanResources.Employee tabellen.
USE AdventureWorks2022;
GO
ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee REBUILD;
GO
Aktivera ett inaktiverat index med CREATE INDEX
Kör följande Transact-SQL skript. Det här exemplet återskapar indexet IX_Employee_OrganizationLevel_OrganizationNode i HumanResources.Employee tabellen med hjälp av kolumnerna OrganizationLevel och OrganizationNode och tar sedan bort det befintliga IX_Employee_OrganizationLevel_OrganizationNode indexet.
USE AdventureWorks2022;
GO
CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee(OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON);
GO
Aktivera ett inaktiverat index med DBCC DBREINDEX
Note
Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen.
Kör följande Transact-SQL skript. Det här exemplet aktiverar indexet IX_Employee_OrganizationLevel_OrganizationNode i HumanResources.Employee tabellen.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
GO
Aktivera alla index i en tabell med ALTER INDEX
Kör följande Transact-SQL skript. Det här exemplet aktiverar alla index i HumanResources.Employee tabellen.
USE AdventureWorks2022;
GO
ALTER INDEX ALL
ON HumanResources.Employee REBUILD;
GO
Aktivera alla index i en tabell med DBCC DBREINDEX
Note
Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen.
Kör följande Transact-SQL skript. Det här exemplet aktiverar alla index i HumanResources.Employee tabellen.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", " ");
GO