DBCC DBREINDEX (Transact-SQL)DBCC DBREINDEX (Transact-SQL)

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

Erstellt einen oder mehrere Indizes einer Tabelle in der angegeben Datenbank neu.Rebuilds one or more indexes for a table in the specified database.

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. Verwenden Sie stattdessen ALTER INDEX.Use ALTER INDEX instead.

Gilt für: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 bis zur aktuellen Version)Applies to: SQL ServerSQL Server ( SQL Server 2008SQL Server 2008 through current version)

Themenlinksymbol Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

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

ArgumenteArguments

table_nametable_name
Der Name der Tabelle, die den angegebenen Index oder die Indizes enthält, die neu zu erstellen sind.Is the name of the table containing the specified index or indexes to rebuild. Tabellennamen müssen den Regeln für Bezeichner entsprechen.Table names must follow the rules for identifiers.

index_nameindex_name
Der Name des neu zu erstellenden Indexes.Is the name of the index to rebuild. Indexnamen müssen den Regeln für Bezeichner entsprechen.Index names must comply with the rules for identifiers. Wenn index_name angegeben wird, muss auch table_name angegeben werden.If index_name is specified, table_name must be specified. Wenn index_name nicht oder als " " angegeben wird, werden alle Indizes für die Tabelle neu erstellt.If index_name is not specified or is " ", all indexes for the table are rebuilt.

fillfactorfillfactor
Der Prozentsatz an Speicherplatz auf jeder Indexseite, der beim Erstellen oder Neuerstellen des Indexes zum Speichern von Daten verwendet werden soll.Is the percentage of space on each index page for storing data when the index is created or rebuilt. 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.fillfactor replaces the fill factor when the index was created, becoming the new default for the index and for any other nonclustered indexes rebuilt because a clustered index is rebuilt.
Wenn fillfactor 0 ist, verwendet DBCC DBREINDEX den für den Index zuletzt angegebenen Füllfaktorwert.When fillfactor is 0, DBCC DBREINDEX uses the fill factor value last specified for the index. Dieser Wert wird in der sys.indexes -Katalogsicht gespeichert.This value is stored in the sys.indexes catalog view.
Wenn fillfactor angegeben wird, müssen auch table_name und index_name angegeben werden.If fillfactor is specified, table_name and index_name must be specified. Wenn fillfactor nicht angegeben wird, wird der Standardfüllfaktor, 100, verwendet.If fillfactor is not specified, the default fill factor, 100, is used. Weitere Informationen finden Sie unter Angeben des Füllfaktors für einen Index.For more information, see Specify Fill Factor for an Index.

WITH NO_INFOMSGSWITH NO_INFOMSGS
Unterdrückt alle Informationsmeldungen mit einem Schweregrad von 0 bis 10.Suppresses all informational messages that have severity levels from 0 through 10.

RemarksRemarks

Die DBCC DBREINDEX-Anweisung erstellt einen Index oder alle Indizes für eine Tabelle neu.DBCC DBREINDEX rebuilds an index for a table or all indexes defined for a table. 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.By allowing an index to be rebuilt dynamically, indexes enforcing either PRIMARY KEY or UNIQUE constraints can be rebuilt without having to drop and re-create those constraints. Das heißt, ein Index kann neu erstellt werden, ohne die Struktur einer Tabelle oder deren Einschränkungen zu kennen.This means that an index can be rebuilt without knowing the structure of a table or its constraints. Dies kann nach dem Massenkopieren von Daten in die Tabelle der Fall sein.This might occur after a bulk copy of data into the table.

DBCC DBREINDEX kann alle Indizes für eine Tabelle in einer einzelnen Anweisung neu erstellen.DBCC DBREINDEX can rebuild all the indexes for a table in one statement. Dies ist einfacher, als mehrere DROP INDEX- und CREATE INDEX-Anweisungen zu codieren.This is easier than coding multiple DROP INDEX and CREATE INDEX statements. 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.Because the work is performed by one statement, DBCC DBREINDEX is automatically atomic, whereas individual DROP INDEX and CREATE INDEX statements must be included in a transaction to be atomic. Außerdem bietet DBCC DBREINDEX mehr Optimierungen, als bei einzelnen DROP INDEX- und CREATE INDEX-Anweisungen möglich wären.Also, DBCC DBREINDEX offers more optimizations than individual DROP INDEX and CREATE INDEX statements.

Im Gegensatz zu DBCC INDEXDEFRAG, oder ALTER INDEX mit der Option REORGANIZE, ist DBCC DBREINDEX ein Offlinevorgang.Unlike DBCC INDEXDEFRAG, or ALTER INDEX with the REORGANIZE option, DBCC DBREINDEX is an offline operation. Wenn ein nicht gruppierter Index neu erstellt wird, wird für die Dauer des Vorgangs eine freigegebene Sperre für die betreffende Tabelle eingerichtet.If a nonclustered index is being rebuilt, a shared lock is held on the table in question for the duration of the operation. Dadurch werden Änderungen an der Tabelle verhindert.This prevents modifications to the table. Falls der gruppierte Index neu erstellt wird, wird eine exklusive Tabellensperre eingerichtet.If the clustered index is being rebuilt, an exclusive table lock is held. Dadurch wird jeglicher Tabellenzugriff verhindert, wodurch die Tabelle offline ist.This prevents any table access, therefore effectively making the table offline. 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.To perform an index rebuild online, or to control the degree of parallelism during the index rebuild operation, use the ALTER INDEX REBUILD statement with the ONLINE option.

Weitere Informationen zum Auswählen einer Methode zum Neuerstellen oder Neuorganisieren eines Indexes finden Sie unter Neuorganisieren und Neuerstellen von Indizes.For more information about selecting a method to rebuild or reorganize an index, see Reorganize and Rebuild Indexes .

RestrictionsRestrictions

Die Verwendung von DBCC DBREINDEX wird für die folgenden Objekte nicht unterstützt.DBCC DBREINDEX is not supported for use on the following objects:

  • SystemtabellenSystem tables
  • RäumlichkeitsindizesSpatial indexes
  • Speicheroptimierte xVelocity-columnstore-IndizesxVelocity memory optimized columnstore indexes

ResultsetsResult Sets

Unabhängig davon, ob NO_INFOMSGS angegeben wurde oder nicht (der Tabellenname muss angegeben werden), gibt DBCC DBREINDEX immer Folgendes zurück:Unless NO_INFOMSGS is specified (the table name must be specified), DBCC DBREINDEX always returns:

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

BerechtigungenPermissions

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.Caller must own the table, or be a member of the sysadmin fixed server role, the db_owner fixed database role, or the db_ddladmin fixed database role.

BeispieleExamples

A.A. Neuerstellen eines IndexRebuilding an 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.The following example rebuilds the Employee_EmployeeID clustered index with a fill factor of 80 on the Employee table in the AdventureWorks database.

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

B.B. Neuerstellen aller IndizesRebuilding all indexes

Im folgenden Beispiel werden alle Indizes für die Employee -Tabelle der AdventureWorks -Datenbank mit dem Füllfaktorwert 70neu erstellt.The following example rebuilds all indexes on the Employee table in AdventureWorks by using a fill factor value of 70.

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

Weitere InformationenSee Also

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