Lezen in het Engels

Delen via


DBCC DBREINDEX (Transact-SQL)

van toepassing op:SQL ServerAzure SQL Managed Instance

Hiermee wordt een of meer indexen voor een tabel in de opgegeven database opnieuw opgebouwd.

Belangrijk

Deze functie wordt verwijderd in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie. Gebruik in plaats daarvan ALTER INDEX.

van toepassing op: SQL Server 2008 (10.0.x) en latere versies.

Transact-SQL syntaxisconventies

Syntaxis

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

Argumenten

table_name

De naam van de tabel die de opgegeven index of indexen bevat om opnieuw te bouwen. Tabelnamen moeten voldoen aan de regels voor id's.

index_name

De naam van de index die moet worden opgebouwd. Indexnamen moeten voldoen aan de regels voor id's. Als index_name is opgegeven, moet table_name worden opgegeven. Als index_name niet is opgegeven of ' 'is, worden alle indexen voor de tabel opnieuw opgebouwd.

fillfactor

Het percentage ruimte op elke indexpagina voor het opslaan van gegevens wanneer de index wordt gemaakt of opnieuw wordt opgebouwd. fillfactor de vulfactor vervangt wanneer de index is gemaakt, de nieuwe standaardwaarde voor de index wordt en voor andere niet-geclusterde indexen opnieuw wordt opgebouwd, omdat een geclusterde index opnieuw wordt opgebouwd.

Wanneer fillfactor 0 is, gebruikt DBCC DBREINDEX de waarde van de vulfactor die het laatst is opgegeven voor de index. Deze waarde wordt opgeslagen in de sys.indexes catalogusweergave.

Als fillfactor is opgegeven, moeten table_name en index_name worden opgegeven. Als fillfactor niet is opgegeven, wordt de standaardvulfactor 100 gebruikt. Zie Vulfactor opgeven voor een index-voor meer informatie.

MET NO_INFOMSGS

Onderdrukt alle informatieve berichten met ernstniveaus van 0 tot en met 10.

Opmerkingen

DBCC DBREINDEX een index herbouwt voor een tabel of alle indexen die zijn gedefinieerd voor een tabel. Door toe te staan dat een index dynamisch opnieuw kan worden opgebouwd, kunnen indexen die primaire sleutel of UNIEKE beperkingen afdwingen, opnieuw worden opgebouwd zonder deze beperkingen te hoeven verwijderen en opnieuw te maken. Dit betekent dat een index opnieuw kan worden opgebouwd zonder de structuur van een tabel of de bijbehorende beperkingen te kennen. Dit kan gebeuren na een bulkkopie van gegevens in de tabel.

DBCC DBREINDEX kunt alle indexen voor een tabel in één instructie opnieuw samenstellen. Dit is eenvoudiger dan het coderen van meerdere DROP INDEX- en CREATE INDEX-instructies. Omdat het werk door één instructie wordt uitgevoerd, is DBCC DBREINDEX automatisch atomisch, terwijl afzonderlijke DROP INDEX- en CREATE INDEX-instructies moeten worden opgenomen in een transactie om atomisch te zijn. Bovendien biedt DBCC DBREINDEX meer optimalisaties dan afzonderlijke DROP INDEX- en CREATE INDEX-instructies.

In tegenstelling tot DBCC INDEXDEFRAGof ALTER INDEX met de optie REORGANIZE, is DBCC DBREINDEX een offlinebewerking. Als een niet-geclusterde index opnieuw wordt opgebouwd, wordt tijdens de bewerking een gedeelde vergrendeling op de desbetreffende tabel bewaard. Hiermee voorkomt u dat wijzigingen in de tabel worden aangebracht. Als de geclusterde index opnieuw wordt opgebouwd, wordt een exclusieve tabelvergrendeling bewaard. Hierdoor voorkomt u toegang tot tabellen, waardoor de tabel effectief offline wordt gemaakt. Gebruik de ALTER INDEX REBUILD instructie met de optie ONLINE om online een index opnieuw op te bouwen of om de mate van parallelle uitvoering tijdens de herbouwbewerking van de index te bepalen.

Zie Indexen opnieuw ordenen en herbouwenvoor meer informatie over het selecteren van een methode voor het opnieuw samenstellen of opnieuw ordenen van een index.

Beperkingen

DBCC DBREINDEX wordt niet ondersteund voor gebruik op de volgende objecten:

  • Systeemtabellen
  • Ruimtelijke indexen
  • columnstore-indexen die zijn geoptimaliseerd voor geheugen

Resultatensets

Tenzij NO_INFOMSGS is opgegeven (de tabelnaam moet worden opgegeven), retourneert DBCC DBREINDEX altijd:

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

Machtigingen

Aanroeper moet eigenaar zijn van de tabel of lid zijn van de sysadmin vaste serverfunctie, de db_owner vaste databaserol of de db_ddladmin vaste databaserol.

Voorbeelden

Een. Een index opnieuw samenstellen

In het volgende voorbeeld wordt de Employee_EmployeeID geclusterde index opnieuw opgebouwd met een opvulfactor van 80 in de Employee tabel in de AdventureWorks2022-database.

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

B. Alle indexen opnieuw opbouwen

In het volgende voorbeeld worden alle indexen in de Employee tabel in AdventureWorks2022 opnieuw opgebouwd met behulp van een opvulfactorwaarde van 70.

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

Zie ook