Povolení indexů a omezení
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL Database v Microsoft Fabric
Toto téma 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 není znovu vytvořen nebo odstraněn.
V tomto tématu
Než začnete:
Povolení zakázaného indexu pomocí:
Než začnete
Omezení a restrikce
Po opětovném sestavení indexu musí být ručně povolena všechna omezení, která byla zakázána kvůli zakázání indexu. Omezení PRIMARY KEY a UNIQUE jsou povolena opětovným sestavením přidruženého indexu. Aby bylo možné povolit omezení cizího klíče, která odkazují na primární klíč nebo unikátní omezení, musí být tento index nejprve znovu sestaven (aktivován). Omezení CIZÍHO KLÍČE jsou povolena pomocí příkazu ALTER TABLE CHECK CONSTRAINT.
Opětovné sestavení zakázaného clusterovaného indexu nelze provést, pokud je možnost ONLINE nastavená na zapnuto.
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ázaný neklastrovaný index PŘESTAVĚT INDEX. Zůstane zakázaný. ALTER INDEX ALL REBUILD. Probíhá přestavba a povolení. ZRUŠIT INDEX (DROP INDEX) Zůstane deaktivováno. VYTVOŘIT INDEX S POUŽITÍM DROP_EXISTING. Zůstane zakázaný. 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 jiném stavu. ALTER INDEX REBUILD. Akce se nezdaří. Akce proběhne úspěšně. DROP INDEX. Akce proběhne úspěšně. Akce proběhne úspěšně. VYTVOŘIT INDEX S MOŽNOSTÍ DROP_EXISTING. Akce se nezdaří. Akce proběhne úspěšně. Při opětovném sestavení zakázaných komprimovaných neclusterovaných indexů se data_compression ve výchozím nastavení nastaví na none, což znamená, že indexy budou nekomprimované. Důvodem je ztráta metadat nastavení komprese při zakázání neclusterovaných indexů. Chcete-li tento problém obejít, je nutné zadat explicitní kompresi dat v příkazu rebuild.
Bezpečnost
Dovolení
Vyžaduje oprávnění ALTER v tabulce nebo zobrazení. Pokud používáte DBCC DBREINDEX, musí uživatel buď vlastnit tabulku; nebo být členem pevné role serveru sysadmin; nebo db_ddladmin a db_owner pevné role databáze.
Použití aplikace SQL Server Management Studio
Povolení zakázaného indexu
V Průzkumníku objektů kliknutím na znaménko plus rozbalte databázi obsahující tabulku, ve které chcete povolit index.
Kliknutím na znaménko plus rozbalte složku Tabulky.
Kliknutím na znaménko 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 pro opětovné sestavení, a zvolte OK.
Povolení všech indexů v tabulce
V Průzkumníku objektů kliknutím na znaménko plus rozbalte databázi obsahující tabulku, na které chcete povolit indexy.
Kliknutím na znaménko plus rozbalte složku Tabulky.
Kliknutím na znaménko plus rozbalte tabulku, na které chcete indexy povolit.
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 Indexy pro opětovné sestavení mřížky, a klikněte na tlačítko 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žití Transact-SQL
Povolení zakázaného indexu pomocí alter INDEXu
V Průzkumníku objektůse připojte k instanci databázového serveru.
Na panelu Standard klikněte na Nový dotaz.
Zkopírujte a vložte následující příklad do okna dotazu a klikněte na Spustit.
USE AdventureWorks2022; GO -- Enables the IX_Employee_OrganizationLevel_OrganizationNode index -- on the HumanResources.Employee table. ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee REBUILD; GO
Povolení zakázaného indexu pomocí příkazu CREATE INDEX
Připojte se k instanci databázového modulu v Průzkumníku objektů.
Na panelu Standard klikněte na Nový dotaz.
Zkopírujte a vložte následující příklad do okna dotazu a klikněte na Spustit.
USE AdventureWorks2022; 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
Povolení zakázaného indexu pomocí DBCC DBREINDEX
V Průzkumníku objektuse připojte k instanci databázového stroje.
Na panelu Standard klikněte na Nový dotaz.
Zkopírujte a vložte následující příklad do okna dotazu a klikněte na Spustit.
USE AdventureWorks2022; GO -- enables the IX_Employee_OrganizationLevel_OrganizationNode index -- on the HumanResources.Employee table DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode); GO
Povolení všech indexů v tabulce pomocí alter INDEX
V Průzkumníku objektůse připojte k instanci Databázového stroje.
Na panelu Standard klikněte na Nový dotaz.
Zkopírujte a vložte následující příklad do okna dotazu a klikněte na Spustit.
USE AdventureWorks2022; GO -- enables all indexes -- on the HumanResources.Employee table ALTER INDEX ALL ON HumanResources.Employee REBUILD; GO
Povolení všech indexů v tabulce pomocí DBCC DBREINDEX
V Průzkumníku objektůpřipojte se k instanci databázového stroje.
Na panelu Standard klikněte na Nový dotaz.
Zkopírujte a vložte následující příklad do okna dotazu a klikněte na Spustit.
USE AdventureWorks2022; GO -- enables all indexes -- on the HumanResources.Employee table DBCC DBREINDEX ("HumanResources.Employee", " "); GO
Další informace naleznete v tématu ALTER INDEX (Transact-SQL), CREATE INDEX (Transact-SQL)a DBCC DBREINDEX (Transact-SQL).