Un peu de mon expérience dans le monde .NET
# Thursday, December 17, 2009
Interrogation du schéma d’une instance de DB
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é.


Thursday, December 17, 2009 3:44:32 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]  SQL-Server  | SQL-Server 2005

Comments are closed.