Freigeben über


Aktivieren von Indizes und Einschränkungen

Gilt für:SQL-ServerAzure-SQL-DatenbankAzure-SQL Verwaltete InstanzSQL-Datenbank in Microsoft Fabric

In diesem Artikel wird beschrieben, wie Sie einen deaktivierten Index in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL aktivieren. Nachdem ein Index deaktiviert wurde, verbleibt er in einem deaktivierten Zustand, bis er neu erstellt oder gelöscht wird.

Einschränkungen

Nachdem der Index neu erstellt wurde, müssen alle Einschränkungen, die aufgrund der Deaktivierung des Indexes deaktiviert wurden, manuell aktiviert werden. PRIMARY KEY und UNIQUE Einschränkungen werden aktiviert, indem der zugeordnete Index neu erstellt wird. Dieser Index muss neu erstellt werden, bevor Sie FOREIGN KEY Einschränkungen aktivieren können, die auf die PRIMARY KEY oder UNIQUE Einschränkung verweisen. FOREIGN KEY Einschränkungen werden mithilfe der ALTER TABLE CHECK CONSTRAINT Anweisung aktiviert.

Das Neuerstellen eines deaktivierten Clustertabellenindexes kann nicht ausgeführt werden, wenn die ONLINE Option auf ON gesetzt ist.

Wenn der gruppierte Index deaktiviert oder aktiviert und der nicht gruppierte Index deaktiviert ist, besitzt die Aktion des gruppierten Indexes die folgenden Auswirkungen auf den deaktivierten nicht gruppierten Index.

Aktion geclusterter Index Status "Nicht gruppierter Index deaktiviert"
ALTER INDEX REBUILD Bleibt deaktiviert
ALTER INDEX ALL REBUILD Neu erstellt und aktiviert
DROP INDEX Neu erstellt und aktiviert
CREATE INDEX WITH DROP_EXISTING Bleibt deaktiviert

Das Erstellen eines neuen gruppierten Index verhält sich genauso wie ALTER INDEX ALL REBUILD.

Zulässige Aktionen für nicht gruppierte Indizes, die einem gruppierten Index zugeordnet sind, hängen vom Status (deaktiviert oder aktiviert) der beiden Indextypen ab. In der folgenden Tabelle werden die zulässigen Aktionen für nicht gruppierte Indizes zusammengefasst.

Nicht gruppierte Indexaktion Wenn sowohl gruppierte als auch nicht gruppierte Indizes deaktiviert sind Wenn der gruppierte Index aktiviert ist und sich der nicht gruppierte Index in beiden Status befindet
ALTER INDEX REBUILD Die Aktion schlägt fehl. Die Aktion ist erfolgreich.
DROP INDEX Die Aktion ist erfolgreich. Die Aktion ist erfolgreich.
CREATE INDEX WITH DROP_EXISTING Die Aktion schlägt fehl. Die Aktion ist erfolgreich.

Wenn deaktivierte komprimierte nicht gruppierte Indizes neu erstellt werden, ist data_compression standardmäßig none, was bedeutet, dass Indizes nicht komprimiert sind. Dies ist darin begründet, dass die Metadaten von Komprimierungseinstellungen verloren gehen, wenn nicht gruppierte Indizes deaktiviert sind. Um dieses Problem zu umgehen, müssen Sie die explizite Datenkomprimierung in der Neuerstellungsanweisung angeben.

Berechtigungen

Erfordert die ALTER-Berechtigung für die Tabelle oder Sicht. Bei Verwendung DBCC DBREINDEXmüssen Sie entweder die Tabelle besitzen oder Mitglied der festen Serverrolle "sysadmin " oder ein Mitglied der db_ddladmin oder db_owner festen Datenbankrollen sein.

Verwenden von SQL Server Management Studio

Aktivieren eines deaktivierten Indexes

  1. Wählen Sie im Objekt-Explorer das Pluszeichen aus, um die Datenbank zu erweitern, die die Tabelle enthält, in der Sie einen Index aktivieren möchten.

  2. Klicken Sie auf das Pluszeichen, um den Ordner Tabellen zu erweitern.

  3. Wählen Sie das Pluszeichen aus, um die Tabelle zu erweitern, auf der Sie einen Index aktivieren möchten.

  4. Wählen Sie das Pluszeichen aus, um den Ordner " Indizes " zu erweitern.

  5. Klicken Sie mit der rechten Maustaste auf den Index, den Sie aktivieren möchten, und wählen Sie Neu erstellenaus.

  6. Überprüfen Sie im Dialogfeld " Indizes neu erstellen", ob sich der richtige Index in den Indizes befindet, um das Raster neu zu erstellen , und wählen Sie "OK" aus.

Alle Indizes einer Tabelle aktivieren

  1. Wählen Sie im Objekt-Explorer das Pluszeichen aus, um die Datenbank zu erweitern, die die Tabelle enthält, für die Sie die Indizes aktivieren möchten.

  2. Klicken Sie auf das Pluszeichen, um den Ordner Tabellen zu erweitern.

  3. Wählen Sie das Pluszeichen aus, um die Tabelle zu erweitern, für die Sie die Indizes aktivieren möchten.

  4. Klicken Sie mit der rechten Maustaste auf den Ordner Indizes , und wählen Sie Alle neu erstellen.

  5. Überprüfen Sie im Dialogfeld " Indizes neu erstellen", ob sich die richtigen Indizes in den Indizes befinden, um das Raster neu zu erstellen , und wählen Sie "OK" aus. Um einen Index aus dem Raster Neu zu erstellende Indizes zu entfernen, wählen Sie den Index aus und drücken die ENTF-TASTE.

Die folgenden Informationen sind im Dialogfeld Indizes neu erstellen verfügbar:

Verwenden von Transact-SQL

Die Codebeispiele in diesem Artikel verwenden die AdventureWorks2025- oder AdventureWorksDW2025 Beispieldatenbank, die Sie von der Microsoft SQL Server Samples and Community Projects Homepage herunterladen können.

Aktivieren eines deaktivierten Indexes mithilfe von ALTER INDEX

Führen Sie das folgende Transact-SQL Skript aus. In diesem Beispiel wird der IX_Employee_OrganizationLevel_OrganizationNode Index der HumanResources.Employee Tabelle aktiviert.

USE AdventureWorks2022;
GO

ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee REBUILD;
GO

Aktivieren eines deaktivierten Indexes mithilfe von CREATE INDEX

Führen Sie das folgende Transact-SQL Skript aus. In diesem Beispiel wird der IX_Employee_OrganizationLevel_OrganizationNode Index in der HumanResources.Employee Tabelle neu erstellt, wobei die Spalten OrganizationLevel und OrganizationNode verwendet werden, und anschließend wird der vorhandene IX_Employee_OrganizationLevel_OrganizationNode Index gelöscht.

USE AdventureWorks2022;
GO

CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee(OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON);
GO

Aktivieren eines deaktivierten Indexes mit DBCC DBREINDEX

Hinweis

Dieses Feature wird in einer zukünftigen Version von SQL Server entfernt. Vermeiden Sie die Verwendung dieses Features in neuer Entwicklungsarbeit, und planen Sie, Anwendungen zu ändern, die derzeit dieses Feature verwenden.

Führen Sie das folgende Transact-SQL Skript aus. In diesem Beispiel wird der IX_Employee_OrganizationLevel_OrganizationNode Index der HumanResources.Employee Tabelle aktiviert.

USE AdventureWorks2022;
GO

DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
GO

Alle Indizes in einer Tabelle mithilfe von ALTER INDEX aktivieren

Führen Sie das folgende Transact-SQL Skript aus. In diesem Beispiel werden alle Indizes in der HumanResources.Employee Tabelle aktiviert.

USE AdventureWorks2022;
GO

ALTER INDEX ALL
ON HumanResources.Employee REBUILD;
GO

Alle Indizes für eine Tabelle mithilfe von DBCC DBREINDEX aktivieren

Hinweis

Dieses Feature wird in einer zukünftigen Version von SQL Server entfernt. Vermeiden Sie die Verwendung dieses Features in neuer Entwicklungsarbeit, und planen Sie, Anwendungen zu ändern, die derzeit dieses Feature verwenden.

Führen Sie das folgende Transact-SQL Skript aus. In diesem Beispiel werden alle Indizes in der HumanResources.Employee Tabelle aktiviert.

USE AdventureWorks2022;
GO

DBCC DBREINDEX ("HumanResources.Employee", " ");
GO