2013-01-08 24 views
0

我在這裏找到Quick way to find usages of DB Objects in SQL Server 2008?幾種方法我可以檢查SQL Server 2008 R2數據庫中對象的依賴關係。有沒有辦法知道哪些對象實際上在SQL Server 2008 R2中使用

但是有沒有辦法知道對象是否真的被使用?換句話說,我發現存儲過程使用某個表,但是如何知道該存儲過程是否曾經執行過,如果是,由誰來執行?

我在問,因爲我來到了一個有一堆存儲過程和表的地方,而且沒有人知道正在使用什麼。

+0

這是一個偉大的想法,但我這麼問是因爲我來,其中有存儲過程和表一堆的地方,沒有人知道正在使用的。 – Amarundo

回答

2

對於表,你可以使用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'); 
.... 
+0

請原諒我的無知。我不明白你爲SP做的那件作品。你的意思是添加一行代碼到每個SP我必須創建一個日誌? – Amarundo

+0

是的,確切地說。需要一點工作。通過右鍵單擊數據庫,然後選擇任務,然後生成腳本,可以幫助編寫所有存儲過程的腳本。 – Andomar

+0

將我的評論添加到答案中。關於我能想到的唯一的另一種方式是,建立Profiler,登錄到一個文件然後挖掘它,但是我懷疑試圖從中獲得你想要的東西需要花費比向每個sp添加日誌行更長的時間。 –

相關問題