sql - 如何在 SQL Server 中查找引用系统表/函数的用户定义对象
问题描述
我有几个引用系统表和函数的用户定义的存储过程和函数,我的目的是找到这些资源并删除它们,我使用下面的查询来查询我知道其中有系统对象的 SP 之一:
SELECT d.object_id,
d.referenced_major_id,
o.name,
o1.name
FROM sys.sql_dependencies d
JOIN sys.objects o ON o.object_id = d.referenced_major_id
JOIN sys.objects o1 ON o1.object_id = d.object_id AND d.object_id =
'ID_Of_UserDefinedSP_That_refers_system_Tables'
但它不返回任何系统引用的对象,我尝试过的其他功能:
sys.dm_sql_referencing_entities
sys.dm_sql_referenced_entities
如果有人查询以查找引用系统表/函数的所有用户定义函数/视图/StoredProcedures(SP),那就太好了
解决方案
以下查询返回视图类型依赖信息、存储过程、函数和与实体类的连接。
SELECT
*
FROM sys.sql_expression_dependencies AS sd
INNER JOIN sys.objects AS o
ON o.object_id = sd.referencing_id
获取所有程序
Select * from sysobjects where type = 'p'
获取所有视图
Select * from sysobjects where type = 'v'
获取所有功能
SELECT
name AS 'Function Name',
SCHEMA_NAME(schema_id) AS 'Schema',
type_desc AS 'Function Type',
create_date AS 'Created Date'
FROM
sys.objects
WHERE
type_desc LIKE '%FUNCTION%';
获取所有具有依赖关系的过程
SELECT
*
FROM sys.sql_expression_dependencies AS sd
INNER JOIN sys.objects AS o
ON o.object_id = sd.referencing_id where type = 'p'
推荐阅读
- javascript - 如何重新渲染子组件?
- css - 如何在 Vue.js 中通过重启和状态反馈来控制 CSS 动画?
- java - 如何在kotlin中访问java类的静态变量?
- php - 发送表单时未使用AngularJS控制器
- java - 线程“主”java.lang.NumberFormatException 中的异常:不是版本:9
- typescript - 如何构造一个类型来描述对函数参数进行的突变?
- android - 是否有可能避免来电的平视通知?
- dynamics-crm - 尝试创建 salesorderdetail 记录时出错
- r - 使用ggplot添加到投影地图时R饼图扭曲
- c++ - Eigen::Map 默认模板参数如何工作?