A fragmentation de base de données se produit lorsque l'ordre logique de l'index de base de données ne correspond pas à la répartition physique des données sur le disque. Comme les changements de données dans la base de données , les tables d'index de la base de données dispersés sur tout le disque. Il augmente le temps nécessaire pour accéder aux données , ce qui entraîne une baisse des performances des applications. Les commandes de la console de base de données MSSQL vous permettent de reconstruire ou de défragmenter les index. Vous devez utiliser l'instruction DBCC DBEREINDEX de défragmenter un index de base de données MSSQL . Instructions 
 1 
 Cliquez sur le bouton "Démarrer " de Windows et sélectionnez « Tous les programmes ». Cliquez pour ouvrir la 
 2 
 Entrez les instructions SQL suivantes dans la fenêtre de console " console de gestion SQL. " : 
 
 SET NOCOUNT ON ; 
 
 DECLARE @ nomtable varchar ( 255); 
 
 DECLARE @ execstr varchar (400); 
 
 DECLARE @ objectid int; 
 
 DECLARE @ indexid int; 
 
 DECLARE @ frag décimal ; 
 
 DECLARE @ MaxFrag décimal ; 
 
 SELECT @ MaxFrag = 30,0 ; '.' 
 
 DECLARE CURSOR tables pour ma 
 SELECT TABLE_SCHEMA + + TABLE_NAME 
 
 DE INFORMATION_SCHEMA.TABLES 
 
 OÙ TABLE_TYPE = ' BASE TABLE' ; 
 
 CREATE TABLE # fraglist (produits 
 ObjectName char ( 255), < br > ObjectId 
 int , AB 
 IndexName char ( 255) , AB 
 IndexId int , AB 
 Lvl int , AB 
 CountPages int , AB 
 CountRows int , AB 
 MinRecSize int , AB 
 MaxRecSize int , AB 
 AvgRecSize int , AB 
 ForRecCount int , AB 
 Etendu int , AB 
 ExtentSwitches int , AB 
 AvgFreeBytes int , AB 
 AvgPageDensity int , AB 
 ScanDensity décimal , AB 
 BestCount int , AB < p> ActualCount int , AB 
 décimal LogicalFrag , AB 
 ExtentFrag décimal) ; 
 
 tables ouvertes ; 
 
 CHERCHER APRÈS 
 
 à partir des tableaux 
 
 INTO @ nomtable ; 
 
 alors que @ @ FETCH_STATUS = 0 
 
 BEGIN 
 
 INSERT INTO # fraglist 
 
 EXEC (' DBCC SHOWCONTIG ( '' ' + @ nomtable + ''') 
 
 FAST , TABLERESULTS , ALL_INDEXES , NO_INFOMSGS '); 
 
 CHERCHER APRÈS 
 
 à partir des tableaux 
 
 INTO @ nomtable ; 
 
 END; 
 
 tables rapprochées ; 
 
 DEALLOCATE tables ; 
 
 DECLARE indices de curseur pour 
 
 SELECT ObjectName , ObjectId , IndexId , LogicalFrag 
 
 de # fraglist 
 
 OÙ LogicalFrag > = @ MaxFrag 
 
 ET INDEXPROPERTY ( ObjectId , IndexName , « IndexDepth ') > 0; 
 open indexes 
 ; 
 
 CHERCHEZ SUIVANT 
 
 à partir des indices 
 
 INTO @ nomtable , @ objectid , @ indexid , @ frag ; 
 
 alors que @ @ FETCH_STATUS = 0 
 
 BEGIN 
 
 PRINT ' exécution DBCC INDEXDEFRAG (0 ,' + RTRIM (@ nomtable ) + ' , AB 
 ' + RTRIM (@ indexid ) + ' ) - fragmentation actuellement '
 
 + RTRIM ( convert ( varchar ( 15) , @ frag )) + '% ' ; 
 
 SELECT @ execstr =' DBCC INDEXDEFRAG (0 , '+ RTRIM (@ objectid ) + ' , AB 
 ' + RTRIM (@ indexid ) + ')' ; 
 
 EXEC ( @ execstr ) ; 
 
 CHERCHER APRÈS 
 
 DE indices 
 
 eN @ nomtable , @ objectid , @ indexid , @ frag ; 
 
 END; 
 indices FERMER 
 ; 
 
 DEALLOCATE indices ; 
 < p> DROP TABLE # fraglist ; . 
 
 GO 
 3 
 Cliquez sur "Fichier" et sélectionner "Exécuter" pour défragmenter l'index de base de données MSSQL