Bonjour à tous,

je cherche un moyen de lister les index fragmenté à plus de 10% et des les reconstruires automatiquement.

J'arrive à lister les index fragmenté à plus de 10% :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT
B.name AS TableName
, C.name AS IndexName
, C.fill_factor AS IndexFillFactor
, D.rows AS RowsCount
, A.avg_fragmentation_in_percent
, A.page_count
FROM sys.dm_db_index_physical_stats(DB_ID(),NULL,NULL,NULL,NULL) A
INNER JOIN sys.objects B
ON A.object_id = B.object_id
INNER JOIN sys.indexes C
ON B.object_id = C.object_id AND A.index_id = C.index_id
INNER JOIN sys.partitions D
ON B.object_id = D.object_id AND A.index_id = D.index_id
WHERE C.index_id > 0
and A.avg_fragmentation_in_percent >10
Et j'arrive à reconstruire les index avec cette commande :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
ALTER INDEX (Nomdel'index) ON dbo.(nomdelabase) REBUILD WITH (
      PAD_INDEX = OFF,
      STATISTICS_NORECOMPUTE = OFF,
      ALLOW_ROW_LOCKS = ON,
      ALLOW_PAGE_LOCKS = ON, 
      SORT_IN_TEMPDB = OFF, 
      ONLINE = ON )
Comment faire une jointure automatique entre ces deux commandes pour ne pas avoir le faire manuellement

Merci de vos réponse