列出SQL Server函数中使用的基础对象
-
26-09-2020 - |
题
我使用下面的方法来获取视图中的基础对象列表:
SELECT view_name, Table_Name
FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE
WHERE View_Name IN
(
'View1', 'View2'
)
ORDER BY view_name, table_name
我找不到任何在函数中提供基本对象的系统表。有没有人有任何想法如何轻松地拉取这些信息?我正在处理具有多个基本DB对象的许多函数,并希望避免手动努力获取此信息。谢谢!
解决方案
sp_depends 将为您提供所有当前版本中的依赖对象列表SQL Server但被列为已弃用。
这里是一个msdn文章,具有查找对象引用的方法功能和小型修改,您可以获得函数引用的对象列表:
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);
.
其他提示
*请阅读 *
正如上面@Spörri答案中所指出的那样, sys.sql_dependencies
被弃用。
系统。sql_dependencies(Transact-SQL) :
此功能将在未来版本的Microsoft SQL中删除 服务器。避免在新的开发工作中使用此功能,并计划 修改当前使用此功能的应用程序。使用方法 系统。sql_expression_dependencies代替。
我在3个函数中观察到,在弃用的表中缺少一个functionas对象id sys.sql_dependencies
, ,我发现所有在 sys.sql_expression_dependencies
表代替。所以使用下面的方法来获取依赖关系:
select *
from sys.sql_expression_dependencies
where referencing_id = object_id('schema.object_name')
不隶属于 dba.stackexchange