Aktivieren von Indizes und EinschränkungenEnable Indexes and Constraints

GILT FÜR: jaSQL ServerjaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

In diesem Thema wird beschrieben, wie ein deaktivierter Index in SQL Server 2017SQL Server 2017 mit SQL Server Management StudioSQL Server Management Studio oder Transact-SQLTransact-SQLaktiviert wird.This topic describes how to enable a disabled index in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Nach dem Deaktivieren eines Indexes bleibt er deaktiviert, bis er neu erstellt oder gelöscht wird.After an index is disabled, it remains in a disabled state until it is rebuilt or dropped

In diesem ThemaIn This Topic

VorbereitungenBefore You Begin

EinschränkungenLimitations and Restrictions

  • Nachdem der Index neu erstellt wurde, müssen alle Einschränkungen, die aufgrund der Deaktivierung des Indexes deaktiviert wurden, manuell aktiviert werden.After rebuilding the index, any constraints that were disabled because of disabling the index must be manually enabled. PRIMARY KEY- und UNIQUE-Einschränkungen werden durch Neuerstellen des zugehörigen Indexes aktiviert.PRIMARY KEY and UNIQUE constraints are enabled by rebuilding the associated index. 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.This index must be rebuilt (enabled) before you can enable FOREIGN KEY constraints that reference the PRIMARY KEY or UNIQUE constraint. FOREIGN KEY-Einschränkungen werden mithilfe der ALTER TABLE CHECK CONSTRAINT-Anweisung aktiviert.FOREIGN KEY constraints are enabled by using the ALTER TABLE CHECK CONSTRAINT statement.

  • Das Neuerstellen eines deaktivierten gruppierten Indexes kann nicht ausgeführt werden, wenn die Option ONLINE auf ON festgelegt wurde.Rebuilding a disabled clustered index cannot be performed when the ONLINE option is set to ON.

  • 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.When the clustered index is disabled or enabled and the nonclustered index is disabled, the clustered index action has the following results on the disabled nonclustered index.

    Gruppierte Index-AktionClustered Index Action Deaktivierter nicht gruppierter Index ...Disabled Nonclustered Index ...
    ALTER INDEX REBUILDALTER INDEX REBUILD. Bleibt deaktiviert.Remains disabled.
    ALTER INDEX ALL REBUILD.ALTER INDEX ALL REBUILD. Wird neu erstellt und aktiviert.Is rebuilt and enabled.
    DROP INDEX.DROP INDEX. Bleibt deaktiviert.Remains disabled.
    CREATE INDEX WITH DROP_EXISTING.CREATE INDEX WITH DROP_EXISTING. Bleibt deaktiviert.Remains disabled.

    Beim Erstellen eines neuen gruppierten Index tritt das gleiche Verhalten auf wie bei ALTER INDEX ALL REBUILD.Creating a new clustered index, behaves the same as 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.Allowed actions on nonclustered indexes associated with a clustered index depend on the state, whether disabled or enabled, of both index types. In der folgenden Tabelle werden die zulässigen Aktionen für nicht gruppierte Indizes zusammengefasst.The following table summarizes the allowed actions on nonclustered indexes.

    Nicht gruppierte Index-AktionNonclustered Index Action Wenn der gruppierte und der nicht gruppierte Index deaktiviert sind.When both the clustered and nonclustered indexes are disabled. Wenn der gruppierte Index aktiviert ist und der nicht gruppierte Index einen beliebigen Zustand aufweist.When the clustered index is enabled and the nonclustered index is in either state.
    ALTER INDEX REBUILDALTER INDEX REBUILD. Die Aktion erzeugt einen Fehler.The action fails. Die Aktion ist erfolgreich.The action succeeds.
    DROP INDEX.DROP INDEX. Die Aktion ist erfolgreich.The action succeeds. Die Aktion ist erfolgreich.The action succeeds.
    CREATE INDEX WITH DROP_EXISTING.CREATE INDEX WITH DROP_EXISTING. Die Aktion erzeugt einen Fehler.The action fails. Die Aktion ist erfolgreich.The action succeeds.
  • 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.When rebuilding disabled compressed nonclustered indexes, data_compression will default to 'none', meaning that indexes will be uncompressed. Dies ist darin begründet, dass die Metadaten von Komprimierungseinstellungen verloren gehen, wenn nicht gruppierte Indizes deaktiviert sind.This is due to compression settings metadata is lost when nonclustered indexes are disabled. Zur Umgehung dieses Problems müssen Sie die Datenkomprimierung explizit in der REBUILD-Anweisung angeben.To work around this you must specify explicit data compression in rebuild statement.

SicherheitSecurity

BerechtigungenPermissions

Erfordert die ALTER-Berechtigung in der Tabelle oder Sicht.Requires ALTER permission on the table or view. 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.If using DBCC DBREINDEX, user must either own the table; or be a member of the sysadmin fixed server role; or the db_ddladmin and db_owner fixed database roles.

Verwendung von SQL Server Management StudioUsing SQL Server Management Studio

So aktivieren Sie einen deaktivierten IndexTo enable a disabled 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.In Object Explorer, click the plus sign to expand the database that contains the table on which you want to enable an index.

  2. Klicken Sie auf das Pluszeichen, um den Ordner Tabellen zu erweitern.Click the plus sign to expand the Tables folder.

  3. Klicken Sie auf das Pluszeichen, um die Tabelle zu erweitern, in der Sie einen Index aktivieren möchten.Click the plus sign to expand the table on which you want to enable an index.

  4. Klicken Sie auf das Pluszeichen, um den Ordner Indizes zu erweitern.Click the plus sign to expand the Indexes folder.

  5. Klicken Sie mit der rechten Maustaste auf den Index, den Sie aktivieren möchten, und wählen Sie Neu erstellenaus.Right-click the index you want to enable and select Rebuild.

  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.In the Rebuild Indexes dialog box, verify that the correct index is in the Indexes to rebuild grid and click OK.

So aktivieren Sie alle Indizes auf einer TabelleTo enable all indexes on a table

  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.In Object Explorer, click the plus sign to expand the database that contains the table on which you want to enable the indexes.

  2. Klicken Sie auf das Pluszeichen, um den Ordner Tabellen zu erweitern.Click the plus sign to expand the Tables folder.

  3. Klicken Sie auf das Pluszeichen, um die Tabelle zu erweitern, in der Sie die Indizes aktivieren möchten.Click the plus sign to expand the table on which you want to enable the indexes.

  4. Klicken Sie mit der rechten Maustaste auf den Ordner Indizes , und wählen Sie Alle neu erstellen.Right-click the Indexes folder and select Rebuild All.

  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.In the Rebuild Indexes dialog box, verify that the correct indexes are in the Indexes to rebuild grid and click 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.To remove an index from the Indexes to rebuild grid, select the index and then press the Delete key.

Die folgenden Informationen sind im Dialogfeld Indizes neu erstellen verfügbar:The following information is available in the Rebuild Indexes dialog box:

Verwenden von Transact-SQLUsing Transact-SQL

So aktivieren Sie einen deaktivierten Index mit ALTER INDEXTo enable a disabled index using ALTER INDEX

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-EngineDatabase Engine-Instanz her.In Object Explorer, connect to an instance of Datenbank-EngineDatabase Engine.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.On the Standard bar, click New Query.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;  
    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 INDEXTo enable a disabled index using CREATE INDEX

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-EngineDatabase Engine-Instanz her.In Object Explorer, connect to an instance of Datenbank-EngineDatabase Engine.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.On the Standard bar, click New Query.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;  
    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 DBREINDEXTo enable a disabled index using DBCC DBREINDEX

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-EngineDatabase Engine-Instanz her.In Object Explorer, connect to an instance of Datenbank-EngineDatabase Engine.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.On the Standard bar, click New Query.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;   
    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 INDEXTo enable all indexes on a table using ALTER INDEX

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-EngineDatabase Engine-Instanz her.In Object Explorer, connect to an instance of Datenbank-EngineDatabase Engine.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.On the Standard bar, click New Query.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;  
    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 DBREINDEXTo enable all indexes on a table using DBCC DBREINDEX

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-EngineDatabase Engine-Instanz her.In Object Explorer, connect to an instance of Datenbank-EngineDatabase Engine.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.On the Standard bar, click New Query.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;   
    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).For more information, see ALTER INDEX (Transact-SQL), CREATE INDEX (Transact-SQL), and DBCC DBREINDEX (Transact-SQL).