Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird beschrieben, wie Sie einen Index oder einschränkungen in SQL Server 2014 mithilfe von SQL Server Management Studio oder Transact-SQL deaktivieren. Durch das Deaktivieren eines Indexes wird verhindert, dass der Benutzer auf den Index zugreifen kann, und für gruppierte Indizes auf die zugrunde liegenden Tabellendaten. Die Indexdefinition verbleibt in Metadaten, und Indexstatistiken werden in nicht gruppierten Indizes aufbewahrt. Wenn Sie einen nicht gruppierten oder gruppierten Index in einer Ansicht deaktivieren, werden die Indexdaten physisch gelöscht. Das Deaktivieren eines gruppierten Indexes in einer Tabelle verhindert den Zugriff auf die Daten; die Daten verbleiben weiterhin in der Tabelle, sind jedoch für DML-Vorgänge (Data Manipulation Language) nicht verfügbar, bis der Index gelöscht oder neu erstellt wird.
In diesem Themenbereich
Bevor Sie beginnen:
So deaktivieren Sie einen Index mit:
Bevor Sie beginnen
Einschränkungen und Beschränkungen
Der Index wird nicht beibehalten, während er deaktiviert ist.
Der Abfrageoptimierer berücksichtigt beim Erstellen von Abfrageausführungsplänen nicht den deaktivierten Index. Außerdem schlagen Abfragen fehl, die mit einem Tabellenhinweis auf den deaktivierten Index verweisen.
Sie können keinen Index erstellen, der denselben Namen wie ein vorhandener deaktivierter Index verwendet.
Ein deaktivierter Index kann gelöscht werden.
Wenn Sie einen eindeutigen Index deaktivieren, werden auch die PRIMARY KEY- oder UNIQUE-Einschränkungen sowie alle Fremdschlüsseleinschränkungen, die auf die indizierten Spalten in anderen Tabellen verweisen, deaktiviert. Beim Deaktivieren eines gruppierten Indexes werden auch alle Einschränkungen für eingehende und ausgehende FREMDSCHLÜSSEL in der zugrunde liegenden Tabelle deaktiviert. Die Einschränkungsnamen werden in einer Warnmeldung aufgelistet, wenn der Index deaktiviert ist. Nach der Neuerstellung des Indexes müssen alle Einschränkungen mithilfe der ALTER TABLE CHECK CONSTRAINT-Anweisung manuell aktiviert werden.
Nicht gruppierte Indizes werden automatisch deaktiviert, wenn der zugeordnete gruppierte Index deaktiviert ist. Sie können erst aktiviert werden, wenn der gruppierte Index in der Tabelle oder Ansicht aktiviert ist oder der gruppierte Index der Tabelle gelöscht wird. Nicht gruppierte Indizes müssen explizit aktiviert werden, es sei denn, der gruppierte Index wurde mithilfe der ALTER INDEX ALL REBUILD-Anweisung aktiviert.
Die ALTER INDEX ALL REBUILD-Anweisung erstellt neu und ermöglicht alle deaktivierten Indizes in der Tabelle, mit Ausnahme deaktivierter Indizes für Ansichten. Indizes für Ansichten müssen in einer separaten ALTER INDEX ALL REBUILD-Anweisung aktiviert werden.
Durch Deaktivieren eines gruppierten Indexes in einer Tabelle werden auch alle gruppierten und nicht gruppierten Indizes für Ansichten deaktiviert, die auf diese Tabelle verweisen. Diese Indizes müssen genauso wie in der referenzierten Tabelle neu erstellt werden.
Auf die Datenzeilen des deaktivierten gruppierten Indexes kann nicht zugegriffen werden, es sei denn, der gruppierte Index wird abgebrochen oder neu erstellt.
Sie können einen deaktivierten nicht gruppierten Index online neu erstellen, wenn die Tabelle keinen deaktivierten gruppierten Index hat. Sie müssen jedoch immer einen deaktivierten gruppierten Index offline wiederherstellen, wenn Sie entweder die Anweisung ALTER INDEX REBUILD oder CREATE INDEX WITH DROP_EXISTING verwenden. Weitere Informationen zu Onlineindexvorgängen finden Sie unter Perform Index Operations Online.
Die CREATE STATISTICS-Anweisung kann nicht erfolgreich in einer Tabelle ausgeführt werden, die über einen deaktivierten gruppierten Index verfügt.
Die Datenbankoption AUTO_CREATE_STATISTICS erstellt neue Statistiken zu einer Spalte, wenn der Index deaktiviert ist und die folgenden Bedingungen vorhanden sind:
AUTO_CREATE_STATISTICS ist auf "EIN" festgelegt.
Es sind keine Statistiken für die Spalte vorhanden.
Statistiken sind während der Abfrageoptimierung erforderlich.
Wenn ein gruppierter Index deaktiviert ist, kann DBCC CHECKDB keine Informationen zur zugrunde liegenden Tabelle zurückgeben. Stattdessen meldet die Anweisung, dass der gruppierte Index deaktiviert ist. DBCC INDEXDEFRAG kann nicht verwendet werden, um einen deaktivierten Index zu defragmentieren; Die Anweisung schlägt mit einer Fehlermeldung fehl. Sie können DBCC DBREINDEX verwenden, um einen deaktivierten Index neu zu erstellen.
Das Erstellen eines neuen gruppierten Indexes ermöglicht zuvor deaktivierte nicht gruppierte Indizes. Weitere Informationen finden Sie unter Aktivieren von Indizes und Einschränkungen.
Sicherheit
Erlaubnisse
Zum Ausführen von ALTER INDEX ist mindestens ALTER-Berechtigung für die Tabelle oder Ansicht erforderlich.
Verwendung von SQL Server Management Studio
So deaktivieren Sie einen Index
Klicken Sie im Objekt-Explorer auf das Pluszeichen, um die Datenbank zu erweitern, die die Tabelle enthält, in der Sie einen Index deaktivieren möchten.
Klicken Sie auf das Pluszeichen, um den Ordner "Tabellen " zu erweitern.
Klicken Sie auf das Pluszeichen, um die Tabelle zu erweitern, auf der Sie einen Index deaktivieren möchten.
Klicken Sie auf das Pluszeichen, um den Ordner " Indizes " zu erweitern.
Klicken Sie mit der rechten Maustaste auf den Index, den Sie deaktivieren möchten, und wählen Sie "Deaktivieren" aus.
Überprüfen Sie im Dialogfeld " Indizes deaktivieren ", ob sich der richtige Index in den Indizes befindet, um das Raster zu deaktivieren , und klicken Sie auf "OK".
So deaktivieren Sie alle Indizes einer Tabelle
Klicken Sie im Objekt-Explorer auf das Pluszeichen, um die Datenbank zu erweitern, die die Tabelle enthält, für die Sie die Indizes deaktivieren möchten.
Klicken Sie auf das Pluszeichen, um den Ordner "Tabellen " zu erweitern.
Klicken Sie auf das Pluszeichen, um die Tabelle zu erweitern, für die Sie die Indizes deaktivieren möchten.
Klicken Sie mit der rechten Maustaste auf den Ordner " Indizes ", und wählen Sie "Alle deaktivieren" aus.
Überprüfen Sie im Dialogfeld " Indizes deaktivieren ", ob sich die richtigen Indizes in den Indizes befinden, um das Raster zu deaktivieren , und klicken Sie auf "OK". Um einen Index aus dem Raster Indizes zum Deaktivieren zu entfernen, wählen Sie den Index aus, und drücken Sie dann die Entf-Taste.
Die folgenden Informationen sind im Dialogfeld " Indizes deaktivieren " verfügbar:
Indexname
Zeigt den Namen des Indexes an. Während der Ausführung zeigt diese Spalte auch ein Symbol an, das den Status darstellt.
Tabellenname
Zeigt den Namen der Tabelle oder Ansicht an, für die der Index erstellt wurde.
Typ des Index
Zeigt den Indextyp an: Gruppiert, nicht gruppiert, spatial oder XML.
Status
Zeigt den Status des Deaktivaktionsvorgangs an. Mögliche Werte nach der Ausführung sind:
Leer
Vor der Ausführung ist der Status leer.
Vorgang wird ausgeführt
Das Deaktivieren der Indizes wurde gestartet, ist aber nicht abgeschlossen.
Erfolgreich
Der Deaktivierungsvorgang wurde erfolgreich abgeschlossen.
Fehler
Während des Index-Deaktivierungsvorgangs ist ein Fehler aufgetreten, und der Vorgang wurde nicht erfolgreich abgeschlossen.
beendet
Die Deaktivierung des Indexes wurde nicht erfolgreich abgeschlossen, da der Benutzer den Vorgang beendet hat.
Meldung
Stellt den Text von Fehlermeldungen während des Deaktivierungsvorgangs bereit. Während der Ausführung werden Fehler als Links angezeigt. Der Text der Hyperlinks beschreibt den Inhalt des Fehlers. Die Spalte "Nachricht " ist selten breit genug, um den vollständigen Nachrichtentext zu lesen. Es gibt zwei Möglichkeiten zum Abrufen des vollständigen Texts:
Bewegen Sie den Mauszeiger über die Nachrichtenzelle, um eine QuickInfo mit dem Fehlertext anzuzeigen.
Klicken Sie auf den Link, um ein Dialogfeld anzuzeigen, in dem der vollständige Fehler angezeigt wird.
Verwenden von Transact-SQL
So deaktivieren Sie einen Index
Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.
Klicken Sie in der Standardleiste auf Neue Abfrage.
Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.
USE AdventureWorks2012; GO -- disables the IX_Employee_OrganizationLevel_OrganizationNode index -- on the HumanResources.Employee table ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee DISABLE;
So deaktivieren Sie alle Indizes einer Tabelle
Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.
Klicken Sie in der Standardleiste auf Neue Abfrage.
Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.
USE AdventureWorks2012; GO -- Disables all indexes on the HumanResources.Employee table. ALTER INDEX ALL ON HumanResources.Employee DISABLE;
Weitere Informationen finden Sie unter ALTER INDEX (Transact-SQL).