Dela via


DBCC DBREINDEX (Transact-SQL)

gäller för:SQL ServerAzure SQL Managed Instance

Återskapar ett eller flera index för en tabell i den angivna databasen.

Viktig

Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Använd ALTER INDEX- i stället.

gäller för: SQL Server 2008 (10.0.x) och senare versioner.

Transact-SQL syntaxkonventioner

Syntax

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

Argument

table_name

Namnet på tabellen som innehåller det angivna indexet eller indexen som ska återskapas. Tabellnamn måste följa reglerna för identifierare.

index_name

Namnet på indexet som ska återskapas. Indexnamn måste följa reglerna för identifierare. Om index_name anges måste table_name anges. Om index_name inte har angetts eller är ' 'återskapas alla index för tabellen.

Procentandelen utrymme på varje indexsida för lagring av data när indexet skapas eller återskapas. fillfactor ersätter fyllningsfaktorn när indexet skapades och blir det nya standardvärdet för indexet och för andra icke-grupperade index som återskapas, eftersom ett klustrat index återskapas.

När fillfactor är 0 använder DBCC DBREINDEX det fyllningsfaktorvärde som senast angavs för indexet. Det här värdet lagras i sys.indexes katalogvy.

Om anges måste table_name och index_name anges. Om fillfactor inte anges används standardfyllningsfaktorn 100. Mer information finns i Ange fyllningsfaktor för ett index.

MED NO_INFOMSGS

Undertrycker alla informationsmeddelanden som har allvarlighetsgrad mellan 0 och 10.

Anmärkningar

DBCC DBREINDEX återskapar ett index för en tabell eller alla index som definierats för en tabell. Genom att tillåta att ett index återskapas dynamiskt kan index som framtvingar antingen PRIMÄRNYCKEL eller UNIKA begränsningar återskapas utan att behöva släppa och återskapa dessa begränsningar. Det innebär att ett index kan återskapas utan att känna till strukturen för en tabell eller dess begränsningar. Detta kan inträffa efter en masskopia av data i tabellen.

DBCC DBREINDEX kan återskapa alla index för en tabell i en instruktion. Det här är enklare än att koda flera DROP INDEX- och CREATE INDEX-instruktioner. Eftersom arbetet utförs av en instruktion är DBCC DBREINDEX automatiskt atomiska, medan enskilda DROP INDEX- och CREATE INDEX-instruktioner måste ingå i en transaktion för att vara atomiska. Dessutom erbjuder DBCC DBREINDEX fler optimeringar än enskilda DROP INDEX- och CREATE INDEX-instruktioner.

Till skillnad från DBCC INDEXDEFRAGeller ALTER INDEX med alternativet REORGANIZE är DBCC DBREINDEX en offlineåtgärd. Om ett icke-grupperat index återskapas lagras ett delat lås i tabellen i fråga under åtgärden. Detta förhindrar ändringar i tabellen. Om det klustrade indexet återskapas lagras ett exklusivt tabelllås. Detta förhindrar all tabellåtkomst, vilket effektivt gör tabellen offline. Om du vill utföra ett återskapande av index online eller för att kontrollera graden av parallellitet under indexet återskapar du instruktionen ALTER INDEX REBUILD med alternativet ONLINE.

Mer information om hur du väljer en metod för att återskapa eller omorganisera ett index finns i Omorganisera och återskapa index.

Inskränkningar

DBCC DBREINDEX stöds inte för användning på följande objekt:

  • Systemtabeller
  • Rumsliga index
  • minnesoptimerade columnstore-index

Resultatuppsättningar

Såvida inte NO_INFOMSGS anges (tabellnamnet måste anges) returnerar DBCC DBREINDEX alltid:

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

Behörigheter

Anroparen måste äga tabellen eller vara medlem i sysadmin fast serverroll, db_owner fast databasroll eller db_ddladmin fast databasroll.

Exempel

A. Återskapa ett index

I följande exempel återskapas det Employee_EmployeeID klustrade indexet med en fyllningsfaktor för 80 i tabellen Employee i AdventureWorks2022-databasen.

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

B. Återskapa alla index

I följande exempel återskapas alla index i tabellen Employee i AdventureWorks2022 med hjälp av fyllningsfaktorvärdet 70.

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

Se även