DBCC DBREINDEX (Transact-SQL)

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)neinAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse Erstellt ein oder mehrere Indizes einer Tabelle in der angegebenen Datenbank neu.

Wichtig

Dieses Feature wird in einer künftigen Version von Microsoft SQL Server entfernt.This feature will be removed in a future version of Microsoft SQL Server. Verwenden Sie dieses Feature nicht in einer neuen Entwicklungsarbeit, und ändern Sie Anwendungen, die dieses Feature verwenden, so schnell wie möglich.Do not use this feature in new development work, and modify applications that currently use this feature as soon as possible.Verwendung ALTER INDEX stattdessen.

Gilt für: SQL ServerSQL Server ( SQL Server 2008SQL Server 2008 über aktuelle Version)

Themenlinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)

Syntax

DBCC DBREINDEX   
(   
    table_name   
    [ , index_name [ , fillfactor ] ]  
)  
    [ WITH NO_INFOMSGS ]   

Argumente

table_name
Der Name der Tabelle, die den angegebenen Index oder die Indizes enthält, die neu zu erstellen sind. Tabellennamen müssen den Regeln für Bezeichner.

index_name
Der Name des neu zu erstellenden Indexes. Indexnamen müssen den Regeln für Bezeichner entsprechen. Wenn index_name angegeben wird, muss auch table_name angegeben werden. Wenn index_name nicht oder als " " angegeben wird, werden alle Indizes für die Tabelle neu erstellt.

FILLFACTOR
Der Prozentsatz an Speicherplatz auf jeder Indexseite, der beim Erstellen oder Neuerstellen des Indexes zum Speichern von Daten verwendet werden soll. fillfactor ersetzt den ursprünglichen Füllfaktor als neuer Standardwert für den Index und für alle nicht gruppierten Indizes, die neu erstellt werden, weil ein gruppierter Index neu erstellt wird.
Wenn fillfactor 0 ist, verwendet DBCC DBREINDEX den für den Index zuletzt angegebenen Füllfaktorwert. Dieser Wert wird in der sys.indexes -Katalogsicht gespeichert.
Wenn fillfactor angegeben wird, müssen auch table_name und index_name angegeben werden. Wenn fillfactor nicht angegeben wird, wird der Standardfüllfaktor, 100, verwendet. Weitere Informationen finden Sie unter Angeben des Füllfaktors für einen Index.

WITH NO_INFOMSGS
Unterdrückt alle Informationsmeldungen mit einem Schweregrad von 0 bis 10.

Hinweise

Die DBCC DBREINDEX-Anweisung erstellt einen Index oder alle Indizes für eine Tabelle neu. Aufgrund der Möglichkeit, Indizes dynamisch neu zu erstellen, können Indizes mit PRIMARY KEY- oder UNIQUE-Einschränkungen neu erstellt werden, ohne diese Einschränkungen zu löschen und neu zu erstellen. Das heißt, ein Index kann neu erstellt werden, ohne die Struktur einer Tabelle oder deren Einschränkungen zu kennen. Dies kann nach dem Massenkopieren von Daten in die Tabelle der Fall sein.

DBCC DBREINDEX kann alle Indizes für eine Tabelle in einer einzelnen Anweisung neu erstellen. Dies ist einfacher, als mehrere DROP INDEX- und CREATE INDEX-Anweisungen zu codieren. Da die Arbeit von einer Anweisung ausgeführt wird, ist DBCC DBREINDEX automatisch atomar. Einzelne DROP INDEX- und CREATE INDEX-Anweisungen müssen dagegen in eine Transaktion eingebunden werden, um atomar zu sein. Außerdem bietet DBCC DBREINDEX mehr Optimierungen, als bei einzelnen DROP INDEX- und CREATE INDEX-Anweisungen möglich wären.

Im Gegensatz zu DBCC INDEXDEFRAG, oder ALTER INDEX mit der Option REORGANIZE, ist DBCC DBREINDEX ein Offlinevorgang. Wenn ein nicht gruppierter Index neu erstellt wird, wird für die Dauer des Vorgangs eine freigegebene Sperre für die betreffende Tabelle eingerichtet. Dadurch werden Änderungen an der Tabelle verhindert. Falls der gruppierte Index neu erstellt wird, wird eine exklusive Tabellensperre eingerichtet. Dadurch wird jeglicher Tabellenzugriff verhindert, wodurch die Tabelle offline ist. Verwenden Sie die ALTER INDEX REBUILD-Anweisung mit der Option ONLINE, um eine Indexneuerstellung online auszuführen, oder um den Grad an Parallelität während des Indexneuerstellungsvorgangs zu steuern.

Weitere Informationen zum Auswählen einer Methode zum Neuerstellen oder Neuorganisieren eines Indexes finden Sie unter Neuorganisieren und Neuerstellen von Indizes .

Einschränkungen

Die Verwendung von DBCC DBREINDEX wird für die folgenden Objekte nicht unterstützt.

  • Systemtabellen
  • Räumlichkeitsindizes
  • Speicheroptimierte xVelocity-columnstore-Indizes

Resultsets

Unabhängig davon, ob NO_INFOMSGS angegeben wurde oder nicht (der Tabellenname muss angegeben werden), gibt DBCC DBREINDEX immer Folgendes zurück:

DBCC execution completed. If DBCC printed error messages, contact your system administrator.  

Berechtigungen

Bei dem Aufrufer muss es sich um den Besitzer der Tabelle oder um ein Mitglied der festen Serverrolle sysadmin , der festen Datenbankrolle db_owner oder der festen Datenbankrolle db_ddladmin handeln.

Beispiele

A. Neuerstellen eines Index

Im folgenden Beispiel wird der gruppierte Index Employee_EmployeeID mit einem Füllfaktor von 80 in der Employee -Tabelle der AdventureWorks -Datenbank neu erstellt.

USE AdventureWorks2012;   
GO  
DBCC DBREINDEX ('HumanResources.Employee', PK_Employee_BusinessEntityID,80);  
GO  

B. Neuerstellen aller Indizes

Im folgenden Beispiel werden alle Indizes für die Employee -Tabelle der AdventureWorks -Datenbank mit dem Füllfaktorwert 70neu erstellt.

USE AdventureWorks2012;   
GO  
DBCC DBREINDEX ('HumanResources.Employee', ' ', 70);  
GO  

Siehe auch

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DBCC (Transact-SQL)
sys.indexes (Transact-SQL)
sys.dm_db_index_physical_stats (Transact-SQL)
ALTER INDEX (Transact-SQL)