是否有一种方法来知道哪些对象实际上正在使用SQL Server 2008 R2



我在这里找到了在SQL Server 2008中找到DB对象的用法的快速方法?我可以用几种方法检查SQL Server 2008 R2数据库中对象的依赖关系。

但是有没有一种方法可以知道一个对象是否被实际使用?换句话说,我看到一个存储过程使用了某个表,但是我如何知道这个存储过程是否被执行过,如果被执行过,是谁执行的?

我问这个问题是因为我来到一个地方,那里有一堆存储过程和表,没有人知道正在使用什么

对于表,可以使用索引统计信息:

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

相关内容

最新更新