有没有办法知道哪些对象实际上在SQL Server 2008 R2中使用

时间:2013-01-08 18:33:55

标签: sql-server sql-server-2008 stored-procedures

我在这里Quick way to find usages of DB Objects in SQL Server 2008?找到了一些检查SQL Server 2008 R2数据库中对象依赖关系的方法。

但有没有办法知道对象是否实际被使用?换句话说,我看到存储过程使用某个表,但是如何知道该存储过程是否曾被执行过,如果是,那么由谁来执行?

我问,因为我来到了一个存储过程和表的BUNCH的地方,没人知道正在使用什么。

1 个答案:

答案 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');
....