Er treedt een database fragmentatie op als de logische volgorde van de database-index komt niet overeen met de fysieke toewijzing van de gegevens op de schijf. Als de gegevens in de database worden gewijzigd, worden de tabellen van de index van de database verspreid over de schijf. Het verhoogt de tijd die je nodig voor toegang tot gegevens, wat resulteert in verminderde toepassingen prestaties. De MSSQL database console opdrachten kunt u defrag indexen te herbouwen. U wilt de DBCC DBEREINDEX instructie aan defrag een MSSQL database-index gebruiken.
Klik op de "Start" knop in Windows en selecteer "Alle programma's." Klik om te openen de "SQL beheerconsole."
Voer de volgende SQL-instructies in het consolevenster:
SET NOCOUNT ON;
VERKLAREN varchar(255);
VERKLAREN varchar(400);
DECLARE int;
DECLARE int;
VERKLAAR decimale;
VERKLAAR decimale;SELECTEER = 30,0;
Tabellen CURSOR voor verklaren
SELECT TABLE_SCHEMA + '.' + TABLE_NAME
VAN INFORMATION_SCHEMA. TABELLEN
WAAR TABLE_TYPE = 'BASISTABEL';TABEL #fraglist (maken
Objectnaam char(255),
ObjectId int,
IndexName char(255),
IndexId int,
Lvl int,
CountPages int,
CountRows int,
MinRecSize int,
MaxRecSize int,
AvgRecSize int,
ForRecCount int,
Afmetingen int,
ExtentSwitches int,
AvgFreeBytes int,
AvgPageDensity int,
ScanDensity decimaal,
BestCount int,
ActualCount int,
LogicalFrag decimaal,
ExtentFrag decimaal);GEOPENDE tabellen;
VERVOLGENS HALEN
UIT tabellen
INTERWIJL = 0
BEGINNEN
#fraglist invoegen
EXEC ('DBCC SHOWCONTIG ('' ' ++ ''')WITH FAST, TABLERESULTS, ALL_INDEXES, NO_INFOMSGS');
VERVOLGENS HALEN
FROM tablesINTO
EINDE;
NAUWE tabellen;
DEALLOCATE tabellen;VERKLAREN van indexen CURSOR voor
Selecteer ObjectName ObjectId, IndexId, LogicalFrag
VAN #fraglist
WAAR LogicalFrag > =AND INDEXPROPERTY (ObjectId, IndexName, 'IndexDepth') > 0;
OPEN indexen;
VERVOLGENS HALEN
VAN indexen
INTERWIJL = 0
BEGINNEN
AFDRUKKEN ' DBCC INDEXDEFRAG uitvoeren (0 ' + RTRIM (+ ',' + RTRIM( + ') - fragmentation currently '+ RTRIM(CONVERT(varchar(15), + '%';
SELECTEER = ' DBCC INDEXDEFRAG (0 ' + RTRIM (+ ',
' + RTRIM( + ')';
EXEC)
VERVOLGENS HALEN
FROM indexesINTO
EINDE;
NAUWE indexen;
DEALLOCATE indexen;DROP TABLE #fraglist;
GAANKlik op "Bestand" en selecteer "Run" om te defragmenteren van de MSSQL database-index.