查找依赖于sp的对象

时间:2016-03-22 06:35:03

标签: sql sql-server stored-procedures

我使用Microsoft SQL服务器。我有一个包含数百个存储过程的数据库。要查找依赖项,我可以右键单击SP,选择视图依赖项,然后单击objects that depend on [name]

我有这个查询来查找所有存储的过程

select * from INFORMATION_SCHEMA.ROUTINES where ROUTINE_TYPE = 'procedure'

如果我添加它,我会排除每个系统SP。

and LEFT(routine_name, 3) not in ('sp_','xp_','ms_')` 

我想找到没有其他proc / function / trigger依赖的所有SP 例如:我有sproc1。在右键单击+视图依赖项中,我在objects that depend on [sproc1]没有元素,这意味着什么都不依赖于此SP。

使用查询来查找未更改一年或更长时间的过程不是一种选择,因为某些操作会在每个闰年执行。有没有办法编写查询来确定存储过程的名称和schema_id 用于NOONE依赖的存储过程? (具有依赖于[this_sp]的零对象)

1 个答案:

答案 0 :(得分:0)

您可以在下面修改搜索对象列表:

SELECT *
FROM sys.objects o
WHERE NOT EXISTS 
(
    SELECT *
    FROM sys.sql_expression_dependencies e
    WHERE e.referenced_id = o.object_id
)
AND o.type IN (N'V', N'P', N'TF', N'IF', N'FN')