web-dev-qa-db-fra.com

Comment savoir quelles vues utilisent une certaine table dans SQL Server (2008)?

Je dois ajouter quelques colonnes à une table et je dois également ajouter ces colonnes à toutes les vues qui utilisent cette table.

Est-il possible d'obtenir une liste de toutes les vues d'une base de données utilisant une certaine table?

51
Peter

Cela devrait le faire:

SELECT * 
FROM   INFORMATION_SCHEMA.VIEWS 
WHERE  VIEW_DEFINITION like '%YourTableName%'
88
James Hill

Pour rechercher des dépendances de table, vous pouvez utiliser la vue catalogue sys.sql_expression_dependencies:

SELECT 
referencing_object_name = o.name, 
referencing_object_type_desc = o.type_desc, 
referenced_object_name = referenced_entity_name, 
referenced_object_type_desc =so1.type_desc 
FROM sys.sql_expression_dependencies sed 
INNER JOIN sys.views o ON sed.referencing_id = o.object_id 
LEFT OUTER JOIN sys.views so1 ON sed.referenced_id =so1.object_id 
WHERE referenced_entity_name = 'Person'  

Vous pouvez également essayer ApexSQL Search un add-in gratuit SSMS et VS qui possède également la fonctionnalité Afficher les dépendances. La fonction Afficher les dépendances permet de visualiser toutes les relations des objets de base de données SQL, y compris celles entre les objets chiffrés et les objets système, les objets spécifiques à SQL Server 2012 et les objets stockés dans des bases de données chiffrées avec TDE (Transparent Data Encryption).

Avertissement: je travaille pour ApexSQL en tant qu'ingénieur support

12
Milica Medic

Si vous avez besoin de trouver des objets de base de données (tables, colonnes, déclencheurs, par exemple) par nom, consultez le [~ # ~] free [~ # ~] Outil Red-Gate appelé Recherche SQL qui le fait - il recherche dans toute votre base de données tout type de chaîne.

enter image description here

enter image description here

C'est un excellent outil indispensable pour tout développeur de base de données ou DBA - ai-je déjà mentionné qu'il est absolument [~ # ~] gratuit [~ # ~] à utiliser pour tout type d'utilisation?

5
marc_s

Je trouve que ça marche mieux:

SELECT type, *
FROM sys.objects
WHERE OBJECT_DEFINITION(object_id) LIKE '%' + @ObjectName + '%'
AND type IN ('V')
ORDER BY name

Filtrage VIEW_DEFINTION à l'intérieur INFORMATION_SCHEMA.VIEWS me donne pas mal de faux positifs.

3
Steven de Salas
SELECT VIEW_NAME
FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE
WHERE TABLE_NAME = 'Your Table'
2
Dmitry

sélectionnez votre table -> Afficher les dépendances -> Objets dépendant de

1
Diego