查找在SQL Server中使用特定表的存储过程

时间:2018-09-18 08:57:47

标签: sql sql-server

是否可以找到存储过程中是否使用了特定表?

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

我需要的是使用特定表的存储过程列表。有什么办法可以做到这一点?

预先感谢

3 个答案:

答案 0 :(得分:1)

您可以在下面的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%'; 

答案 1 :(得分:0)

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

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 :(得分:-1)

签出sys.dm_sql_referencing_entities。示例:

  

SELECTreferencing_schema_name,referencing_entity_name,   referencing_id,referencing_class_desc,is_caller_dependent FROM   sys.dm_sql_referencing_entities('dbo.t','OBJECT');