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 :

quand utiliser sp_refreshsqlmodule et sp_recompile ?


Sujet :

Développement SQL Server

Vue hybride

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut quand utiliser sp_refreshsqlmodule et sp_recompile ?
    Bonjour,

    Je n'ai pas bien saisi la différence entre sp_refreshsqlmodule et sp_recompile

    Dans le cas ou la structure d'une table change, il semble qu'il soit nécessaire d'executer sp_refreshsqlmodule pour toutes les vues, fonctions et procédures qui référencent cette table

    Mais est-ce nécessaire, ou même utile, d'exécuter sp_recompile dans le cas de changement de structure d'une table ?

    Et si non, dans quel cas est-ce nécessaire ?

    Merci

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    sp_refreshsqlmodule doit être utilisé lors la modification porte sur la structure d'un objet (métadonnées) pour être prises en compte par les vues , triggers DML, procédures stockées etc ... pour ne pas avoir des comportements inattendues. Par exemple :

    table T1 (id int, col1 varchar(10);
    view V1 --> SELECT * FROM T1;
    -- Modification table
    table T1 (id int, col1 varchar(10), col2 varchar(10));

    Si on fait un select sur la vue, elle ne retournera que les colonnes id et col1. Si on exécute la procédure sp_refreshsqlmodule cela permet de mettre à jour les métadonnées de la vue V1 pour pouvoir retourner l'ensemble des colonnes id, col1 et col2.

    sp_recompile doit être utilisé sur les changements de structure d'objets également et modifications des données. sp_recompile permet à l'optimiseur de requêtes de prendre en compte ces modifications pour générer un plan de requêtes adéquate et éviter les plans de requêtes obsolètes.

    ++

Discussions similaires

  1. [MySQL 5.0] RAND() inefficace quand utilisation de GROUP BY
    Par Takusen dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/11/2006, 15h39
  2. [POO] Quand utiliser une classe ?
    Par Gwipi dans le forum Langage
    Réponses: 8
    Dernier message: 05/05/2006, 14h31
  3. Réponses: 10
    Dernier message: 08/02/2005, 10h52
  4. Écriture dans un DBgrid quand utilise un query comme dataset
    Par dcayou dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/07/2004, 22h22
  5. [Procédure Stocké] Quand utiliser ?
    Par touhami dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/03/2004, 09h09

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