SQL Server : qui utilise cette table ?

Pour mettre à jour une base dans laquelle de nombreuses personnes sont intervenues, je me suis retrouvé à chercher quels objets utilisent la colonne que je veux modifier. Quelques requêtes de schéma très simples permettent d'avoir facilement l'info.

Commençons par les clés étrangères : cette requête très simple liste les contraintes foreign key

select
 
object_name(fk.constid) [Contrainte],
  object_name(fk.fkeyid)+'.'+fcol.name [De],
  object_name(fk.rkeyid)+'.'+rcol.name [vers]
from sys.sysforeignkeys fk
inner join sys.columns fcol on fcol.object_id = fk.fkeyid and fcol.column_id=fk.fkey
inner join sys.columns rcol on rcol.object_id = fk.rkeyid and rcol.column_id=fk.rkey

En partant de la même base, on peut facilement trouver quelles contraintes référencent une table précise :

select
 
object_name(fk.constid) [Contrainte],
  object_name(fk.fkeyid) [Table dépendante],
  fcol.name [Clé étrangère]
from sys.sysforeignkeys fk
inner join sys.columns fcol on fcol.object_id = fk.fkeyid and fcol.column_id=fk.fkey
where fk.rkeyid=object_id('CLIENT')

Un peu plus compliqué, à priori, les fonctions et proc stockées ? Et bien, pas du tout. Là encore les vues de schéma donnent l'info très facilement :

select distinct object_name(id) [Proc ou fonction] from sys.sysdepends where depid=object_id('CLIENT')

Et voilà. Comme d'habitude avec SQL Server, la question n'est pas tant de savoir si c'est faisable que de savoir où chercher...

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Related posts

Add comment


(Will show your Gravatar icon)  

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Live preview

January 6. 2009 02:05