Il y a une chose que j'ai de la difficulté à me faire entrer dans la tête avec SQL Server et que je me fais prendre pratiquement à chaque fois, c'est la recompilation des vues (views).
Dès que j'ai commencé à travailler avec SQL Server 2000 et MSDE, j'avais tendance à construire des vues avec des SELECT *. Ça n'a pas pris de temps pour me rendre compte que c'était une mauvaise pratique.
Au début, tout semble aller pour le mieux. La paresse nous fait éviter d'avoir à nommer tous les champs et cette mince économie de temps nous rattrape tôt ou tard. Dès qu'on ajoute un champ dans une table utilisée par la vue, les problèmes appparaissent : le champ n'est pas pris en compte dans la vue, les champs peuvent être décalés dans la structure de la vue (le champ nommé possède la valeur du champ voisin), etc.
Jusqu'à ce qu'une lumière s'allume dans notre tête : il fallait recompiler la vue pour que le SELECT * s'ajuste et que tout se replace correctement. Et ceci doit se faire manuellement, donc il faut y penser à chaque fois.
Récemment, suite à une migration sur un serveur MSSQL 2008, j'ai rencontré le problème avec le code d'un vieux projet. Avec Enterprise Manager, l'éditeur laissait la flexibilité d'utiliser l'astérisque pour récupérer tous les champs. Une fois la base de données restaurée sous 2008, la définition de la vue semble conserver le *. Mais au moment de l'édition d'une vue par le mode design, Management Studio (2008) remplace automatiquement le * en nommant explicitement l'ensemble des champs trouvés dans la table référencée par SELECT *, ce qui permet d'éviter l'erreur.
Sur le même sujet, il y a un outil que j'utilise régulièrement pour synchroniser les changements entre deux bases de données (mises à jour) et qui est suffisamment évolué pour recompiler les vues automatiquement dans le script généré : RedGate SQL Compare. En quelques étapes simples, ce logiciel s'assure de générer le script correctement pour recompiler explicitement les vues touchées par les changements dans les tables. Pour le prix, je ne m'en passerais pas.
samedi 9 janvier 2010
0 réponse à "SQL Server et les vues à recompiler"
S'abonner à :
Publier des commentaires (Atom)