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 Onlineindizes in SQL Server 2014 mithilfe von SQL Server Management Studio oder Transact-SQL erstellen, neu erstellen oder ablegen. Die OPTION ONLINE ermöglicht gleichzeitigen Benutzerzugriff auf die zugrunde liegenden Tabellen- oder gruppierten Indexdaten und alle zugeordneten nicht gruppierten Indizes während dieser Indexvorgänge. Während beispielsweise ein gruppierter Index von einem Benutzer neu erstellt wird, kann dieser Benutzer und andere die zugrunde liegenden Daten weiterhin aktualisieren und abfragen. Wenn Sie DDL-Vorgänge (Data Definition Language) offline ausführen, z. B. erstellen oder einen gruppierten Index neu erstellen; Diese Vorgänge enthalten exklusive Sperren für die zugrunde liegenden Daten und zugeordneten Indizes. Dadurch werden Änderungen und Abfragen an den zugrunde liegenden Daten verhindert, bis der Indexvorgang abgeschlossen ist.
Hinweis
Onlineindexvorgänge sind in jeder SQL Server-Edition nicht verfügbar. Weitere Informationen finden Sie unter Features Supported by the Editions of SQL Server 2014.
In diesem Themenbereich
Bevor Sie beginnen:
So erstellen Sie einen Index online mit:
Bevor Sie beginnen
Einschränkungen und Beschränkungen
Es wird empfohlen, Onlineindexvorgänge für Geschäftsumgebungen auszuführen, die 24 Stunden am Tag, sieben Tage pro Woche ausgeführt werden, bei denen die Notwendigkeit für gleichzeitige Benutzeraktivitäten während indexvorgängen von entscheidender Bedeutung ist.
Die Option ONLINE ist in den folgenden Transact-SQL-Anweisungen verfügbar.
ALTER TABLE (Um UNIQUE- oder PRIMARY KEY-Einschränkungen mit CLUSTERED-Index-Option hinzuzufügen oder zu entfernen)
Weitere Einschränkungen und Einschränkungen beim Erstellen, Neuerstellen oder Ablegen von Indizes online finden Sie in den Richtlinien für Onlineindexvorgänge.
Sicherheit
Erlaubnisse
Erfordert ALTER-Berechtigung für die Tabelle oder Ansicht.
Verwendung von SQL Server Management Studio
So erstellen Sie einen Index online neu
Klicken Sie im Objekt-Explorer auf das Pluszeichen, um die Datenbank zu erweitern, die die Tabelle enthält, in der Sie einen Index online neu erstellen möchten.
Erweitern Sie den Ordner Tabellen .
Klicken Sie auf das Pluszeichen, um die Tabelle zu erweitern, auf der Sie einen Index online neu erstellen möchten.
Erweitern Sie den Ordner "Indizes ".
Klicken Sie mit der rechten Maustaste auf den Index, den Sie online neu erstellen möchten, und wählen Sie "Eigenschaften" aus.
Wählen Sie unter "Seite auswählen" "Optionen" aus.
Wählen Sie "Online-DML-Verarbeitung zulassen" und dann " True " aus der Liste aus.
Klicke auf OK.
Klicken Sie mit der rechten Maustaste auf den Index, den Sie online neu erstellen möchten, und wählen Sie "Neu erstellen" aus.
Überprüfen Sie im Dialogfeld " Indizes neu erstellen", ob sich der richtige Index in den Indizes befindet, um das Raster neu zu erstellen , und klicken Sie auf OK.
Verwenden von Transact-SQL
Um einen Index online zu erstellen, wiederherstellen oder entfernen
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. Im Beispiel wird eine vorhandene Onlineversion neu erstellt.
USE AdventureWorks2012; GO ALTER INDEX AK_Employee_NationalIDNumber ON HumanResources.Employee REBUILD WITH (ONLINE = ON); GOIm folgenden Beispiel wird ein gruppierter Index online gelöscht und die resultierende Tabelle (Heap) mithilfe der
MOVE TOKlausel in die DateigruppeNewGroupverschoben. Diesys.indexes,sys.tablesundsys.filegroupsKatalogansichten werden abgefragt, um die Index- und Tabellenplatzierung in den Dateigruppen vor und nach der Verschiebung zu überprüfen.USE AdventureWorks2012; GO --Create a clustered index on the PRIMARY filegroup if the index does not exist. IF NOT EXISTS (SELECT name FROM sys.indexes WHERE name = N'AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate') CREATE UNIQUE CLUSTERED INDEX AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate ON Production.BillOfMaterials (ProductAssemblyID, ComponentID, StartDate) ON 'PRIMARY'; GO -- Verify filegroup location of the clustered index. SELECT t.name AS [Table Name], i.name AS [Index Name], i.type_desc, i.data_space_id, f.name AS [Filegroup Name] FROM sys.indexes AS i JOIN sys.filegroups AS f ON i.data_space_id = f.data_space_id JOIN sys.tables as t ON i.object_id = t.object_id AND i.object_id = OBJECT_ID(N'Production.BillOfMaterials','U') GO --Create filegroup NewGroup if it does not exist. IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE name = N'NewGroup') BEGIN ALTER DATABASE AdventureWorks2012 ADD FILEGROUP NewGroup; ALTER DATABASE AdventureWorks2012 ADD FILE (NAME = File1, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\File1.ndf') TO FILEGROUP NewGroup; END GO --Verify new filegroup SELECT * from sys.filegroups; GO -- Drop the clustered index and move the BillOfMaterials table to -- the Newgroup filegroup. -- Set ONLINE = OFF to execute this example on editions other than Enterprise Edition. DROP INDEX AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate ON Production.BillOfMaterials WITH (ONLINE = ON, MOVE TO NewGroup); GO -- Verify filegroup location of the moved table. SELECT t.name AS [Table Name], i.name AS [Index Name], i.type_desc, i.data_space_id, f.name AS [Filegroup Name] FROM sys.indexes AS i JOIN sys.filegroups AS f ON i.data_space_id = f.data_space_id JOIN sys.tables as t ON i.object_id = t.object_id AND i.object_id = OBJECT_ID(N'Production.BillOfMaterials','U'); GO
Weitere Informationen finden Sie unter ALTER INDEX (Transact-SQL).