sql - 所有(用户定义的标量)函数及其依赖项的列表

标签 sql sql-server tsql ssms sql-server-2014

我正在尝试选择数据库中所有函数及其依赖项的列表。

(如果我手动查看依赖项并选择“依赖于 [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/

相关文章:

mysql - 从 SQL 触发器调用 AWS SNS 主题

php - 我可以忽略另一个 sql 查询中的 where 子句吗

c# - SQL 代码连接到一个由逗号分隔的键引用的表,并对其中的数据求和

sql-server - SQL Server 上编辑距离的最佳实践

mysql - 计算 Sum() 但不包括 JOIN

c# - 并发选择唯一记录

C# smo 项目程序集未引用错误

sql - 递归相关表达式如何加速不同的查询?

sql - 在sql oracle中使用regexp_substr获取特定单词后的单词

c# - 在批处理结束时检测到不可提交的事务。事务被回滚