我在这里Quick way to find usages of DB Objects in SQL Server 2008?找到了一些检查SQL Server 2008 R2数据库中对象依赖关系的方法。
但有没有办法知道对象是否实际被使用?换句话说,我看到存储过程使用某个表,但是如何知道该存储过程是否曾被执行过,如果是,那么由谁来执行?
我问,因为我来到了一个存储过程和表的BUNCH的地方,没人知道正在使用什么。
答案 0 :(得分:3)
对于表格,您可以使用index statistics:
SELECT getdate() AS RunTime
, DB_NAME(i.database_id) as DatabaseName
, OBJECT_NAME(i.object_id, i.database_id) as ObjectName
, *
FROM sys.dm_db_index_usage_stats AS i
WHERE object_id > 100
这适用于所有表,因为SQL Server甚至可以为堆保留索引统计信息。
存储过程更难。你可以对它们进行检测,例如:
create table SPCalls (name sysname);
go
alter procedure dbo.YourSP
as
insert SPCalls ('YourSP');
....