【问题标题】:Find the stored procedure which uses a particular table in sql server在sql server中查找使用特定表的存储过程
【发布时间】:2018-09-18 08:57:46
【问题描述】:

有没有办法找出某个特定的表是否在存储过程中使用?

在我工作的地方,有近 100 个存储过程,并且遍历每个存储过程不是一个可行的选择。

我需要一个使用特定表的存储过程列表。有没有办法实现这一目标?

提前致谢

【问题讨论】:

标签: sql sql-server


【解决方案1】:

以下查询可能对您有所帮助。

SELECT OBJECT_NAME(id)
FROM SYSCOMMENTS S
INNER JOIN SYS.OBJECTS O ON O.Object_Id = S.id
WHERE S.TEXT LIKE '%Table_name%'
    AND O.type = 'P'

它可以搜索存储过程中是否包含特定的单词。如果您需要查找表名,则可以从存储过程文本中找到它。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    您可以使用下面的 SQL。只需替换您的表名即可。

    SELECT DISTINCT 
       o.name AS Object_Name,
       o.type_desc
    FROM sys.sql_modules m        
        INNER JOIN  sys.objects o 
         ON m.object_id = o.object_id 
        WHERE o.type='P' and
             m.definition Like '%yourtable%'; 
    

    【讨论】:

      【解决方案3】:

      查看 sys.dm_sql_referencing_entities。示例:

      选择引用模式名称,引用实体名称, referencing_id, referencing_class_desc, is_caller_dependent FROM sys.dm_sql_referencing_entities('dbo.t', 'OBJECT');

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-13
        • 1970-01-01
        相关资源
        最近更新 更多