bonjour à tous,

Je suis débutante et je dois reconstruire tous les index de toutes les bases de données d'un serveur, qui ont un taux de fragmentation supérieur à 30%.
Je travaille sous sql server 2005.

Je parcours donc les bases de données, les tables et les index. Je récupère le nom de la base, de la table, de l'index, l'id object de l'index, l'id de l'index, l'id de la bdd et quand je veux récupérer le taux de fragmentation pour cet index avec la commande:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
SELECT 
     @FRAG =avg_fragmentation_in_percent
    FROM sys.dm_db_index_physical_stats(@ID_BDD,@ID_OBJECT,@ID_INDEX,NULL,NULL )
print ('frag:')
print @FRAG
Celui-ci m'indique l'erreur suivante:

Parameter 2 is incorrect for this statement.

Or le paramètre 2 correspond à @ID_OBJECT que j'ai défini en tant qu'int et qui a bien une valeur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
/*récupération de object_id de l'index*/
 
SELECT 
     @ID_OBJECT = i.object_id
FROM sys.indexes i
WHERE 
   @NAME_INDEX = i.name 
 
print('id object:')
print @ID_OBJECT
Peut-être me suis-je trompé dans la récupération de l'id object ?

Merci d'avance pour votre réponse.