我在这里找到了在 SQL Server 2008 中查找数据库对象用法的快速方法?有几种方法可以检查 SQL Server 2008 R2 数据库中对象的依赖关系。
但是有没有办法知道一个对象是否真的被使用了?换句话说,我看到一个存储过程使用了某个表,但是我如何知道该存储过程是否曾经被执行过,如果是,由谁执行?
我之所以问,是因为我来到一个有 A BUNCH 存储过程和表的地方,没有人知道正在使用什么。
我在这里找到了在 SQL Server 2008 中查找数据库对象用法的快速方法?有几种方法可以检查 SQL Server 2008 R2 数据库中对象的依赖关系。
但是有没有办法知道一个对象是否真的被使用了?换句话说,我看到一个存储过程使用了某个表,但是我如何知道该存储过程是否曾经被执行过,如果是,由谁执行?
我之所以问,是因为我来到一个有 A BUNCH 存储过程和表的地方,没有人知道正在使用什么。
对于表,您可以使用索引统计信息:
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');
....