J'exécute actuellement un script qui effectue un DBCC INDEXDEFRAG sur chaque table d'une base de données SQL Server 2005, une table à la fois. L'utilisation de DBCC DBREINDEX au lieu d'INDEXDEFRAG n'est pas une option, en raison des contraintes d'espace et des exigences de disponibilité.
J'ai remarqué qu'il fallait beaucoup de temps pour défragmenter certaines tables. Par exemple, si j'examine la vue de gestion dynamique "sys.dm_exec_requests", je peux voir que l'INDEXDEFRAG suivant est actuellement en train de se retourner sur l'index cluster d'une table qui a un id_table de 829610394:
DBCC INDEXDEFRAG (0, 829610394, 1)
Je sais que le processus de défragmentation prendra beaucoup de temps. En laissant de côté le fait que le script en cours d'exécution finira par défragmenter toutes les tables, y a-t-il un mal à exécuter manuellement un autre DBCC INDEXDEFRAG sur l'index cluster d'une autre table pendant l'exécution de la commande actuelle? Les deux tables seront-elles réellement défragmentées en même temps si je fais cela?