Aktivieren von Indizes und Einschränkungen

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

In diesem Thema wird beschrieben, wie Sie einen deaktivierten Index in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL aktivieren. Nach dem Deaktivieren eines Indexes bleibt er deaktiviert, bis er neu erstellt oder gelöscht wird.

In diesem Thema

Vorbereitungen

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 durch Neuerstellen des zugehörigen Indexes aktiviert. Dieser Index muss neu erstellt (aktiviert) 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 gruppierten Indexes kann nicht ausgeführt werden, wenn die Option ONLINE auf ON festgelegt wurde.

  • 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.

    Gruppierte Index-Aktion Deaktivierter nicht gruppierter Index ...
    ALTER INDEX REBUILD Bleibt deaktiviert.
    ALTER INDEX ALL REBUILD. Wird neu erstellt und aktiviert.
    DROP INDEX. Bleibt deaktiviert.
    CREATE INDEX WITH DROP_EXISTING. Bleibt deaktiviert.

    Beim Erstellen eines neuen gruppierten Index tritt das gleiche Verhalten auf wie bei 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 Index-Aktion Wenn der gruppierte und der nicht gruppierte Index deaktiviert sind. Wenn der gruppierte Index aktiviert ist und der nicht gruppierte Index einen beliebigen Zustand aufweist.
    ALTER INDEX REBUILD Die Aktion erzeugt einen Fehler. Die Aktion ist erfolgreich.
    DROP INDEX. Die Aktion ist erfolgreich. Die Aktion ist erfolgreich.
    CREATE INDEX WITH DROP_EXISTING. Die Aktion erzeugt einen Fehler. Die Aktion ist erfolgreich.
  • Beim Neuerstellen von deaktivierten, komprimierten und nicht gruppierten Indizes wird „data_compression“ standardmäßig auf „none“ festgelegt. Dies bedeutet, dass die Indizes nicht komprimiert werden. Dies ist darin begründet, dass die Metadaten von Komprimierungseinstellungen verloren gehen, wenn nicht gruppierte Indizes deaktiviert sind. Zur Umgehung dieses Problems müssen Sie die Datenkomprimierung explizit in der REBUILD-Anweisung angeben.

Sicherheit

Berechtigungen

Erfordert die ALTER-Berechtigung in der Tabelle oder Sicht. Bei der Verwendung von DBCC DBREINDEX muss der Benutzer die Tabelle besitzen oder Mitglied der festen Serverrolle sysadmin oder der festen Datenbankrollen db_ddladmin und db_owner sein.

Verwendung von SQL Server Management Studio

So aktivieren Sie einen deaktivierten Index

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

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

  3. Klicken Sie auf das Pluszeichen, um die Tabelle zu erweitern, in der Sie einen Index aktivieren möchten.

  4. Klicken Sie auf das Pluszeichen, 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 , dass der richtige Index im Raster Neu zu erstellende Indizes ausgewählt ist, und klicken sie auf OK.

So aktivieren Sie alle Indizes auf einer Tabelle

  1. Klicken Sie in Objekt-Explorer auf das Pluszeichen, um die Datenbank zu erweitern, die die Tabelle enthält, in der Sie die Indizes aktivieren möchten.

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

  3. Klicken Sie auf das Pluszeichen, um die Tabelle zu erweitern, in der 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 , dass die richtigen Indizes im Raster Neu zu erstellende Indizes ausgewählt sind, und klicken sie auf OK. Um einen Index aus dem Raster Neu zu erstellende Indizes zu entfernen, wählen Sie den Index aus, und drücken Sie die ENTF-Taste.

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

Verwenden von Transact-SQL

So aktivieren Sie einen deaktivierten Index mit ALTER INDEX

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.

    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  
    

So aktivieren Sie einen deaktivierten Index mit CREATE INDEX

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.

    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  
    

So aktivieren Sie einen deaktivierten Index mit DBCC DBREINDEX

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.

    USE AdventureWorks2022;   
    GO  
    -- enables the IX_Employee_OrganizationLevel_OrganizationNode index  
    -- on the HumanResources.Employee table  
    DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);  
    GO  
    

So aktivieren Sie alle Indizes auf einer Tabelle mit ALTER INDEX

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.

    USE AdventureWorks2022;  
    GO  
    -- enables all indexes  
    -- on the HumanResources.Employee table  
    ALTER INDEX ALL ON HumanResources.Employee  
    REBUILD;  
    GO  
    

So aktivieren Sie alle Indizes auf einer Tabelle mit DBCC DBREINDEX

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.

    USE AdventureWorks2022;   
    GO  
    -- enables all indexes  
    -- on the HumanResources.Employee table  
    DBCC DBREINDEX ("HumanResources.Employee", " ");  
    GO  
    

Weitere Informationen finden Sie unter ALTER INDEX (Transact-SQL),CREATE INDEX (Transact-SQL) und DBCC DBREINDEX (Transact-SQL).