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
Spravovaná instance
Azure SQLDatabáze SQL 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.
Limitations
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á deaktivováno. |
ALTER INDEX ALL REBUILD |
Přestavěno a aktivováno |
DROP INDEX |
Přestavěno a aktivováno |
CREATE INDEX WITH DROP_EXISTING |
Zůstává deaktivováno. |
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 selhává. | Akce bude úspěšná. |
Při opětovném sestavení zakázaných komprimovaných neclusterovaných indexů se data_compression výchozí hodnota změní na none, 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.
Permissions
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 AdventureWorks2025 nebo AdventureWorksDW2025, 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
Note
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í IX_Employee_OrganizationLevel_OrganizationNode index v HumanResources.Employee tabulce.
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
Note
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
Související obsah
- ALTER INDEX (Transact-SQL)
- VYTVOŘTE INDEX (Transact-SQL)
- DBCC DBREINDEX (Transact-SQL)