1

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

但是有没有办法知道一个对象是否真的被使用了?换句话说,我看到一个存储过程使用了某个表,但是我如何知道该存储过程是否曾经被执行过,如果是,由谁执行?

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

4

1 回答 1

3

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

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');
....
于 2013-01-08T18:50:29.493 回答