我使用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]的零对象)
答案 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')