by Stéphane
18. December 2009 00:44
MS a introduit, avec SQL-Server 2005 et les schémas de DB, de nouveaux vecteurs d’interrogation de la structure d’une instance de DB. Voici un petit état de lieu.
Les vues aux normes SQL2
Chaque instance est dorénavant affublée d’un nouveau schéma : INFORMATION_SCHEMA. Il permet d’interroger les informations en utilisant un point d’entrée central, puis en spécifiant l’information recherchée (tables, views, routines, ..), avec une syntaxe « utilisateur »
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES
Les vues systèmes (DMV Dynamic Management Views)
Un deuxième schéma est automatiquement ajouté à chaque instance : SYS. L’interrogation se fait via des vues fournies par MS. Le niveau d’abstraction est moindre, mais ne nombre d’informations accessibles est supérieur.
SELECT
*
FROM
SYS.OBJECTS T1
WHERE
T1.type = ‘U’
Les procédures stockées spécialisées
MS fournit un certain nombre de procédures stockés permettant d’interroger les informations, tels que sp_tables, sp_columns, …
EXEC sp_tables
Les tables systèmes
L’interrogation se fait cette fois au niveau le plus bas disponible. Les données sont brutes et relativement difficile à interpréter …
SELECT
*
FROM
SYSOBJECTS T1
WHERE
T1.type = ‘U’
Conclusion
Les quatre méthodes de query de l’information retournent le même résultat, soit la liste des tables d’une DB. Mais alors quelle méthode utiliser en priorité ? La réponse, et l’explication est relativement simple :
1) Les vues aux normes SQL2
2) Les vues systèmes (DMV Dynamic Management Views)
3) Les procédures stockées spécialisées
4) Les tables systèmes
Et pourquoi ?
1) Vous l’aurez compris, chaque niveau encapsule le niveau suivant. Les vues aux normes SQL2 sont donc plus faciles à utiliser car elles « cachent » la complexité du bas niveau.
2) Seuls les vues et les SPs sont compatibles de version en version. Il est donc évident de les préférer pour des raisons de compatibilité.