DBCC DBREINDEX (Transact-SQL)
Erstellt einen oder mehrere Indizes einer Tabelle in der angegeben Datenbank neu.
Wichtig: |
---|
Dieses Feature wird in einer zukünftigen Version von Microsoft SQL Server entfernt. Verwenden Sie dieses Feature beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird. Verwenden Sie stattdessen ALTER INDEX. |
Transact-SQL-Syntaxkonventionen
Syntax
DBCC DBREINDEX
(
table_name
[ , index_name [ , fillfactor ] ]
)
[ WITH NO_INFOMSGS ]
Argumente
- table_name
Der Name der Tabelle, für die die angegebenen Indizes neu zu erstellen sind. Tabellennamen müssen den Regeln für Bezeichner entsprechen. database.
- 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 als neuer Standardwert den ursprünglichen Füllfaktor für den Index und für alle nicht gruppierten Indizes, die neu erstellt werden, da 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 wurde, wird der Standardfüllfaktor 100 verwendet. Weitere Informationen finden Sie unter Füllfaktor.
- WITH NO_INFOMSGS
Unterdrückt alle Informationsmeldungen mit einem Schweregrad von 0 bis 10.
Resultsets
Unabhängig davon, ob eine der Optionen (außer NO_INFOMSGS) angegeben wurde (der Tabellenname muss angegeben werden), gibt DBCC DBREINDEX Folgendes zurück:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
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 der Vorgang von einer Anweisung ausgeführt wird, ist DBCC DBREINDEX automatisch atomar. Einzelne DROP INDEX- und CREATE INDEX-Anweisungen müssten dagegen in eine Transaktion eingebunden werden, um atomar zu sein. Außerdem bietet DBCC DBREINDEX gegenüber einzelnen DROP INDEX- und CREATE INDEX-Anweisungen den Vorteil von umfangreicheren Optimierungen.
Im Gegensatz zu DBCC INDEXDEFRAG oder ALTER INDEX mit der Option REORGANIZE ist DBCC DBREINDEX ein Offlinevorgang. Während der Neuerstellung eines nicht gruppierten Indexes wird für die Dauer des Vorgangs eine gemeinsame Sperre für die betreffende Tabelle eingerichtet. Dadurch werden Änderungen an der Tabelle verhindert. Bei Neuerstellung des gruppierten Indexes wird eine exklusive Tabellensperre eingerichtet. Dadurch wird jeglicher Tabellenzugriff verhindert, sodass die Tabelle praktisch 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 überwachen.
Weitere Informationen zum Auswählen einer Methode zum Neuerstellen oder Neuorganisieren eines Indexes finden Sie unter Neuorganisieren und Neuerstellen von Indizes .
Die Verwendung von DBCC DBREINDEX für Systemtabellen wird nicht unterstützt.
Berechtigungen
Der Aufrufer muss der Besitzer der Tabelle oder ein Mitglied der festen Serverrolle sysadmin, der festen Datenbankrolle db_owner oder der festen Datenbankrolle db_ddladmin sein.
Beispiele
A. Neuerstellen eines Indexes
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 AdventureWorks;
GO
DBCC DBREINDEX ("HumanResources.Employee", PK_Employee_EmployeeID,80);
GO
B. Neuerstellen aller Indizes
Im folgenden Beispiel werden alle Indizes für die Employee
-Tabelle der AdventureWorks
-Datenbank mit dem Füllfaktorwert 70
neu erstellt.
USE AdventureWorks;
GO
DBCC DBREINDEX ("HumanResources.Employee", " ", 70);
GO
Siehe auch
Verweis
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DBCC (Transact-SQL)
sys.indexes (Transact-SQL)
sys.dm_db_index_physical_stats
ALTER INDEX (Transact-SQL)
Andere Ressourcen
Tabellen- und Indexarchitektur