Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL Database v Microsoft Fabric
Tento článek popisuje, jak povolit zakázaný index v SQL Serveru pomocí aplikace SQL Server Management Studio nebo jazyka Transact-SQL. Po zakázání indexu zůstane v zakázaném stavu, dokud se znovu nevytvoří nebo nebude odstraněn.
Omezení
Po opětovném sestavení indexu je třeba ručně povolit všechna omezení, která byla zakázána v důsledku deaktivace indexu.
PRIMARY KEY
a UNIQUE
omezení jsou povolena opětovným sestavením přidruženého indexu. Tento index musí být znovu sestaven a povolen, než bude možné povolit FOREIGN KEY
omezení, která odkazují na PRIMARY KEY
omezení nebo UNIQUE
omezení.
FOREIGN KEY
Omezení jsou povolena pomocí ALTER TABLE CHECK CONSTRAINT
příkazu.
Nelze opětovně sestavit deaktivovaný clusterovaný index, pokud je možnost ONLINE
nastavena na hodnotu ON
.
Pokud je clusterovaný index zakázaný nebo povolený a neclusterovaný index je zakázaný, akce clusterovaného indexu má následující výsledky u zakázaného neclusterovaného indexu.
Akce clusterovaného indexu | Zakázání stavu neclusterovaného indexu |
---|---|
ALTER INDEX REBUILD |
Zůstává vypnutý. |
ALTER INDEX ALL REBUILD |
Přestavěno a aktivováno |
DROP INDEX |
Přepracováno a aktivováno |
CREATE INDEX WITH DROP_EXISTING |
Zůstává vypnutý. |
Vytvoření nového clusterovaného indexu se chová stejně jako ALTER INDEX ALL REBUILD
.
Povolené akce u neclusterovaných indexů přidružených ke clusterovanému indexu závisí na stavu, jestli jsou zakázané nebo povolené, u obou typů indexů. Následující tabulka shrnuje povolené akce u neclusterovaných indexů.
Akce neclusterovaného indexu | Pokud jsou clusterované i neclusterované indexy zakázané | Pokud je clusterovaný index povolený a neclusterovaný index je v některém ze stavů |
---|---|---|
ALTER INDEX REBUILD |
Akce selhává. | Akce bude úspěšná. |
DROP INDEX |
Akce bude úspěšná. | Akce bude úspěšná. |
CREATE INDEX WITH DROP_EXISTING |
Akce selže. | Akce bude úspěšná. |
Při opětovném sestavení zakázaných komprimovaných neclusterovaných indexů se none
výchozí hodnota změní na data_compression
, což znamená, že indexy jsou nekomprimované. Důvodem je ztráta metadat nastavení komprese při zakázání neclusterovaných indexů. Chcete-li tento problém vyřešit, je nutné zadat explicitní kompresi dat v příkazu rebuild.
Dovolení
Vyžaduje oprávnění ALTER
pro tabulku nebo zobrazení. Pokud používáte DBCC DBREINDEX
, musíte buď vlastnit tabulku, nebo být členem pevné role serveru správce systému , nebo členem db_ddladmin nebo db_owner pevné databázové role.
Použití aplikace SQL Server Management Studio
Povolení zakázaného indexu
V Průzkumníku objektů vyberte znaménko plus a rozbalte databázi obsahující tabulku, na které chcete povolit index.
Klikněte na znaménko plus a rozbalte složku Tabulky.
Výběrem znaménka plus rozbalte tabulku, na které chcete povolit index.
Kliknutím na znaménko plus rozbalte složku Indexy.
Klikněte pravým tlačítkem myši na index, který chcete aktivovat, a vyberte Znovu sestavit.
V dialogovém okně Znovu sestavit indexy ověřte, zda je správný index v mřížce Indexy ke znovu sestavení a klikněte na OK.
Povolení všech indexů v tabulce
V Průzkumníku objektů vyberte znaménko plus a rozbalte databázi obsahující tabulku, na které chcete indexy povolit.
Klikněte na znaménko plus a rozbalte složku Tabulky.
Výběrem znaménka plus rozbalte tabulku, u které chcete povolit indexy.
Klikněte pravým tlačítkem na složku Indexy a vyberte Znovu sestavit vše.
V dialogovém okně Znovu sestavit indexy ověřte, zda jsou správné indexy v indexech k opětovnému sestavení mřížky , a vyberte OK. Pokud chcete odebrat index z Indexy pro opětovné sestavení mřížky, vyberte index a stiskněte klávesu Delete.
Následující informace jsou k dispozici v dialogovém okně Znovu sestavit indexy:
Použijte Transact-SQL
Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2022
nebo AdventureWorksDW2022
, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .
Povolte zakázaný index pomocí ALTER INDEX
Spusťte následující Transact-SQL skript. Tento příklad povolí IX_Employee_OrganizationLevel_OrganizationNode
index v HumanResources.Employee
tabulce.
USE AdventureWorks2022;
GO
ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee REBUILD;
GO
Povolení zakázaného indexu pomocí funkce CREATE INDEX
Spusťte následující Transact-SQL skript. Tento příklad znovu vytvoří index IX_Employee_OrganizationLevel_OrganizationNode
na tabulce HumanResources.Employee
pomocí sloupců OrganizationLevel
a OrganizationNode
, a potom odstraní existující index IX_Employee_OrganizationLevel_OrganizationNode
.
USE AdventureWorks2022;
GO
CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee(OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON);
GO
Povolení zakázaného indexu pomocí DBCC DBREINDEX
Poznámka:
Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.
Spusťte následující Transact-SQL skript. Tento příklad aktivuje IX_Employee_OrganizationLevel_OrganizationNode
index u tabulky HumanResources.Employee
.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
GO
Povolte všechny indexy na tabulce pomocí ALTER INDEX
Spusťte následující Transact-SQL skript. Tento příklad povolí všechny indexy v HumanResources.Employee
tabulce.
USE AdventureWorks2022;
GO
ALTER INDEX ALL
ON HumanResources.Employee REBUILD;
GO
Aktivovat všechny indexy v tabulce pomocí DBCC DBREINDEX
Poznámka:
Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.
Spusťte následující Transact-SQL skript. Tento příklad povolí všechny indexy v HumanResources.Employee
tabulce.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", " ");
GO