Question

J'utilise ce qui suit pour obtenir une liste des objets sous-jacents dans une vue :

SELECT view_name, Table_Name
FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE
WHERE View_Name IN 
    (
      'View1', 'View2'
    )
ORDER BY view_name, table_name

Je n'ai trouvé aucune table système fournissant les objets de base dans une fonction.Quelqu'un a-t-il une idée sur la manière d'extraire facilement ces informations ?Je traite de nombreuses fonctions avec plusieurs objets de base de données et je souhaite éviter les efforts manuels pour obtenir ces informations.Merci!

Était-ce utile?

La solution

sp_depends vous donnera la liste des objets dépendants dans toutes les versions actuellesde SQL Server mais est répertorié comme obsolète.

Voici un article de MSDN avec un moyen de trouver des objets référencésFonction et avec de petites modifications Vous pouvez obtenir la liste des objets référencés par une fonction:

SELECT OBJECT_NAME(object_id) AS referencing_object_name
 ,COALESCE(COL_NAME(object_id, column_id), '(n/a)') AS referencing_column_name
 ,object_name(referenced_major_id) as referenced_object
 ,*
FROM sys.sql_dependencies
--WHERE referenced_major_id = OBJECT_ID('schema.objectname')
where object_id = object_id('schema.objectname')
ORDER BY OBJECT_NAME(object_id), COL_NAME(object_id, column_id);

et en tant que bonus: http://beyondrelational.com/modules/2/blogs/28/posts/10399/tsql-lab-9-how-à-find-the-dépendance-chaîne-de-la base de données-objet.aspx

Autres conseils

* Lisez s'il vous plaît *

Comme indiqué dans la réponse de @Spörri ci-dessus, sys.sql_dependencies est obsolète.


sys.sql_dependencies (Transact-SQL) :

Cette fonction sera supprimée dans une future version de Microsoft SQL Server.Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.Utilisez à la place SYS.SQL_EXPRY_DEPENDENCES.


J'ai observé parmi 3 fonctions, qu'une fonction d'identifiant d'objet manquait dans le tableau obsolète sys.sql_dependencies, et j'ai tout trouvé dans le sys.sql_expression_dependencies tableau à la place.Utilisez donc ce qui suit pour obtenir les dépendances :

select * 
from sys.sql_expression_dependencies
where referencing_id =  object_id('schema.object_name') 
Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top