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

Développement SQL Server Discussion :

Problème de variables dans requête DBCC DBREINDEX


Sujet :

Développement SQL Server

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Problème de variables dans requête DBCC DBREINDEX
    Bonjour à tous,

    J'ai effectué de nombreuses recherches mais je n'ai pas réussi à trouver un sujet qui puisse m'aider pour mon problème

    Je suis débutante en SQL et je travaille sous SQL server 2008.
    J'aimerais effectuer une reconstruction des index dont le taux de fragmentation est supérieur à un nombre donné et cela pour toutes les tables de toutes les bases de données.
    J'ai presque terminé mon code.
    Une fois que j'ai toutes les informations qu'il me faut, je veux reconstruire à l'aide de cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBCC DBREINDEX ('@NOM_TABLE', '@NOM_INDEX', 100)
    où @NOM_TABLE et @NOM_INDEX sont les variables comportant le nom de la table actuelle et le nom de l'index actuel.

    Or quand j'execute la reconstruction l'erreur suivante s'affiche:

    Msg*7999, Niveau*16, État*4, Ligne*48
    Could not find any index named '@NOM_INDEX' for table 'TABLE'.
    Je penses donc qu'il ne reconnait pas le nom de l'index mais juste le nom de la variable.
    Je ne vois absolument pas comment faire pour résoudre ce problème.

    Pouvez-vous m'éclairer?

    Merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vous avez fait deux petites erreurs :

    - pour exécuter une commande telle que DBCC, vous devez stocker la totalité de la commande dans une variable de type chaîne et la passer en paramètre à EXEC(@maCommandeSQL) ou sp_executeSQL (@maCommandeSQL)

    - Comme vous êtes sous SQL Server 2008, je vous conseille plutôt d'utiliser l'instruction ALTER INDEX avec les options REBUILD et REORGANIZE suivant le taux de fragmentation. DBCC DBREINDEX était utile jusque sous SQL Server 2000
    Sachez que défragmenter un index qui comporte moins de 100 pages n'a aucun intérêt.
    Pour détecter la fragementation d'un index, utilisez les vues de gestion dynamiques sys.dm_db_index_physical_stats (colonne avg_fragmentation_in_percent) et sys.dm_db_index_usage_stats

    Jetez un œil par ici et par ici

    @++

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Merci de ton aide, j'ai réussi juste avant que tu ne me donne la réponse:

    J'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set @Requete = 'DBCC DBREINDEX ('+@NAME_TABLE+', '+@NAME_INDEX+',80)'
    Exec (@Requete)
    Effectivement cela marche !

    Merci beaucoup pour ses renseignements !

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Réindexation de toutes le Tables d'une B.D
    Use 'La B.D en question'
    go

    --Réindexation de toutes les tables
    EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?', ' ', 80)"
    GO

    --Mise à jour des Statistiques
    EXEC sp_updatestats
    GO


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de variable dans une requête SQL
    Par Namzicos dans le forum SQL
    Réponses: 2
    Dernier message: 27/01/2010, 14h38
  2. Problème de variable dans une Requête SQl
    Par steph77 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 28/08/2009, 15h16
  3. Problème variable dans requête SELECT
    Par mary27 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 15/06/2009, 18h43
  4. Problême d'insertion de variable dans requête
    Par CyberMen dans le forum VBA Access
    Réponses: 1
    Dernier message: 29/07/2008, 14h27
  5. Problème Variable dans requête SQL
    Par maxime350 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 10/04/2008, 20h55

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