是否可以找到存储过程中是否使用了特定表?
在我工作的地方,有将近100个存储过程,而遍历每个存储过程都不是可行的选择。
我需要的是使用特定表的存储过程列表。有什么办法可以做到这一点?
预先感谢
答案 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');