我在這裏找到Quick way to find usages of DB Objects in SQL Server 2008?幾種方法我可以檢查SQL Server 2008 R2數據庫中對象的依賴關係。有沒有辦法知道哪些對象實際上在SQL Server 2008 R2中使用
但是有沒有辦法知道對象是否真的被使用?換句話說,我發現存儲過程使用某個表,但是如何知道該存儲過程是否曾經執行過,如果是,由誰來執行?
我在問,因爲我來到了一個有一堆存儲過程和表的地方,而且沒有人知道正在使用什麼。
我在這裏找到Quick way to find usages of DB Objects in SQL Server 2008?幾種方法我可以檢查SQL Server 2008 R2數據庫中對象的依賴關係。有沒有辦法知道哪些對象實際上在SQL Server 2008 R2中使用
但是有沒有辦法知道對象是否真的被使用?換句話說,我發現存儲過程使用某個表,但是如何知道該存儲過程是否曾經執行過,如果是,由誰來執行?
我在問,因爲我來到了一個有一堆存儲過程和表的地方,而且沒有人知道正在使用什麼。
對於表,你可以使用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');
....
這是一個偉大的想法,但我這麼問是因爲我來,其中有存儲過程和表一堆的地方,沒有人知道正在使用的。 – Amarundo