You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server中查找引用系统表/函数的用户自定义对象

查找引用系统表/函数的用户自定义对象方案

你之前使用的sys.sql_dependencies、sys.dm_sql_referenced_entities这类依赖追踪视图,不会完整记录用户对象对系统级对象的引用关系,因此无法返回预期结果。最稳定的实现方式是直接扫描所有用户可编程对象的定义文本,匹配系统对象特征,具体SQL如下:

SELECT 
    SCHEMA_NAME(o.schema_id) AS 对象所属架构,
    o.name AS 对象名,
    o.type_desc AS 对象类型,
    m.definition AS 对象完整定义
FROM sys.sql_modules m
INNER JOIN sys.objects o 
    ON m.object_id = o.object_id
WHERE 
    -- 过滤系统自带对象,只查用户自定义对象
    o.is_ms_shipped = 0
    -- 匹配引用sys架构或INFORMATION_SCHEMA架构的系统对象
    AND (
        m.definition LIKE N'%sys.%'
        OR m.definition LIKE N'%INFORMATION_SCHEMA.%'
    )
-- 可选:按对象类型过滤,比如只查存储过程和函数
-- AND o.type IN ('P', 'FN', 'IF', 'TF', 'V')

说明

  • 对象类型说明:
    • P:存储过程
    • FN/IF/TF:标量函数/表值函数
    • V:视图
    • TR:触发器
  • 如果需要定位引用了特定系统对象的资源,可在WHERE条件中追加匹配规则,比如要找引用了sys.objects的对象,添加AND m.definition LIKE N'%sys.objects%'即可
  • 执行该查询需要持有当前数据库的VIEW DEFINITION权限

内容的提问来源于stack exchange,提问作者Aditya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 10:06:05