IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

parametre incorrect sys.dm_db_index_physical_stats


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Par défaut parametre incorrect sys.dm_db_index_physical_stats
    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.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Que vaut @name_index ? C'est là le hic. or vous ne nous donnez pas tout votre code...

    De toute façon pour faire cela vous pouvez vous inspirer de la procédure que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/optimis...ntenanceIndex/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Par défaut
    Merci de votre réponse,

    @NAME_INDEX vaut le nom de l'index grâce à un curseur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE @PARCOURS_INDEX AS CURSOR
    SET @PARCOURS_INDEX=CURSOR FOR SELECT name FROM sys.indexes
    OPEN @PARCOURS_INDEX
    FETCH @PARCOURS_INDEX INTO @NAME_INDEX
    Dans votre sujet vous ne faites pas référence à la procédure sys.dm_db_index_physical_stats pour récupérer le taux de fragmentation et vous ne prenez pas en compte celui-ci.
    Bien sur cela va sûrement m'aider mais j'aimerais réussir avec cette méthode.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Dans votre curseur vous avez la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT name FROM sys.indexes
    En la lançant vous verrez que certaines info sont NULL. Ceci est normal car dans sys.indexes on trouve aussi bien les tables que les index.

    Revoyez votre méthode et adaptez la à ce que vous voulez faire !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Problème de performance sys.dm_db_index_physical_stats
    Par Proxy dans le forum Développement
    Réponses: 3
    Dernier message: 12/01/2015, 09h19
  2. passage de parametre incorrect dans une sub
    Par shinta dans le forum VBA Access
    Réponses: 4
    Dernier message: 15/12/2008, 19h23
  3. Erreur système Code 87. Parametres incorrects
    Par Morfus dans le forum Langage
    Réponses: 1
    Dernier message: 29/09/2008, 11h18
  4. probleme d'affichage IHM 'Parametre incorrect'
    Par GENERYS dans le forum C++Builder
    Réponses: 5
    Dernier message: 26/11/2004, 16h53
  5. transmision de tableau en parametre
    Par Horus dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/05/2002, 11h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo