DBCC DBREINDEX (Transact-SQL)
gäller för:SQL Server
Azure 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 INDEXDEFRAG
eller 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