我正在尝试选择数据库中所有函数及其依赖项的列表。
(如果我手动查看依赖项并选择“依赖于 [function] 的对象”选项,将会出现的依赖项。)
我的主要问题是让每个函数的所有依赖项汇总到一行。
我试过使用 stuff
,但出于某种原因我无法让它在这种情况下工作。
select
o.name
, stuff((select N', ' + Name from sys.objects o3 where o3.object_id = o2.object_id for xml path ('')), 1, 1, N'') as Dependencies
from sys.objects o
left join sys.sql_expression_dependencies sed
on object_id = referenced_id
left join sys.objects o2
on referencing_id = o2.object_id
where o.type='FN'
order by o.name
我哪里错了?
最佳答案
这可能对你有用:
SELECT
O.Name
,T.Dependencies
FROM sys.Objects O
OUTER APPLY
(
SELECT SUBSTRING(
(
SELECT ',' + OBJECT_NAME(D.referenced_id)
FROM sys.SQL_Expression_Dependencies D
WHERE D.referencing_id = O.Object_ID
GROUP BY OBJECT_NAME(D.referenced_id)
ORDER BY OBJECT_NAME(D.referenced_id)
FOR XML PATH('')
)
,2,4000) AS Dependencies
) T
WHERE O.Type = 'FN'
ORDER BY O.Name
;
如果没有,请告诉我缺少的内容,我可以从那里开始。祝你好运! :)
关于sql - 所有(用户定义的标量)函数及其依赖项的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42511660/