En database fragmentering opstår, når den logiske rækkefølge af databasen indeks svarer ikke til den fysiske fordeling af data på disken . Da data ændres i databasen , bliver indekset tabeller i databasen spredt ud over hele disken. Det øger den tid, du har brug for at få adgang til data , hvilket resulterer i nedsat applikationer performance. De MSSQL database konsolkommandoer tillader dig at genopbygge eller bedrage indekser. Du er nødt til at bruge DBCC DBEREINDEX erklæring til bedrage en MSSQL database indeks. Instruktioner
1
Klik på "Start " knappen i Windows og vælg " Alle programmer". Klik for at åbne
2
Indtast følgende SQL-sætninger i konsol-vinduet " SQL Management Console ". :
SET NOCOUNT TIL;
DECLARE @ tablename varchar (255 ),
DECLARE @ execstr varchar (400 ),
DECLARE @ objectID int ,
DECLARE @ indexid int ,
DECLARE @ frag decimal ;
DECLARE @ maxfrag decimal ,
SELECT @ maxfrag = 30,0 ; '.'
DECLARE tabeller CURSOR FOR
SELECT TABLE_SCHEMA + + TABLE_NAME
FRA INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = ' BASE TABEL «
CREATE TABLE # fraglist (
ObjectName char ( 255) , < br >
objectID int , salg
IndexName char ( 255) ,
IndexId int , salg
Lvl int ,
CountPages int ,
countRows int , salg
MinRecSize int , salg
MaxRecSize int , salg
AvgRecSize int , salg
ForRecCount int ,
Extents int ,
ExtentSwitches int ,
AvgFreeBytes int , salg
AvgPageDensity int , salg
ScanDensity decimal , salg
BestCount int,
< p> ActualCount int , salg
LogicalFrag decimal , salg
ExtentFrag decimal ),
åbne tabeller ,
FETCH NEXT
FRA tabeller < br >
INTO @ tabelnavn ,
MENS @ @ FETCH_STATUS = 0
BEGIN
INSERT INTO # fraglist
EXEC ( ' DBCC SHOWCONTIG ( '' ' + @ tabelnavn + ''' )
MED FAST , TABLERESULTS , ALL_INDEXES , NO_INFOMSGS ');
FETCH NEXT
FRA borde
INTO @ tabelnavn ,
END ,
LUK bordet;
deallocate bordet;
DECLARE indekser markør i
SELECT ObjectName , objectID , IndexId , LogicalFrag
FRA # fraglist
WHERE LogicalFrag > = @ maxfrag
OG INDEXPROPERTY ( objectID , IndexName ' IndexDepth ' ) > 0 ;
OPEN indekser ,
FETCH NEXT
FRA indekser
INTO @ tabelnavn , @ objectID @ indexid @ frag ,
MENS @ @ FETCH_STATUS = 0
BEGIN
PRINT ' Udfører DBCC INDEXDEFRAG (0, ' + RTRIM ( @ tabelnavn ) + ' ,
' + RTRIM ( @ indexid ) + ' ) - fragmentering øjeblikket '
+ RTRIM ( CONVERT ( VARCHAR (15) , @ frag ) ) + '% ' ,
SELECT @ execstr =' DBCC INDEXDEFRAG (0, '+ RTRIM ( @ objectID ) + ' ,
' + RTRIM ( @ indexid ) + ' ) «
EXEC ( @ execstr )
FETCH NEXT
FRA indekser
INTO @ tabelnavn , @ objectID @ indexid @ frag ,
END ,
LUK indekser ,
deallocate indekser ;
< p> DROP TABLE # fraglist ; .
GO
3
Klik på "File " og vælg " Kør" for at bedrage MSSQL database index
< br >