簡體   English   中英

如何查找SQL Server 2005中未執行或訪問時間超過6個月的數據庫視圖

[英]How to Find the Database Views Which are not executed or Accessed for more than 6 Months in SQL Server 2005

我想通過識別和刪除視圖和存儲過程來清理數據庫,這些視圖和存儲過程在SQL Server 2005中未使用或較長時間(可能是過去6個月或1年)未使用。

請幫忙。

除非您在系統24/7上運行跟蹤並保留數據或使用2008年的審核機制,否則您不能100%執行此操作。

重新啟動系統時,所有數據都會丟失,否則,您可以按照以下查詢找到特定對象的上次使用時間

select 
    DB_NAME(us.[database_id]) as [db], 
    OBJECT_NAME(us.[object_id],us.[database_id]) as [object], 
    MAX(us.[last_user_lookup]) as [last_user_lookup], 
    MAX(us.[last_user_scan]) as [last_user_scan], 
    MAX(us.[last_user_seek]) as [last_user_seek] 
from sys.dm_db_index_usage_stats us 
where us.[database_id] = DB_ID() 
    AND us.[object_id] = OBJECT_ID('tblname')
group by us.[database_id], us.[object_id]; 

基於@Koushick的答案,我使用此..解決了該問題。

SELECT DB_NAME(us.[database_id]) AS [db],
       OBJECT_NAME(us.[object_id], us.[database_id]) AS [object],
       MAX(us.[last_user_lookup]) AS [last_user_lookup],
       MAX(us.[last_user_scan]) AS [last_user_scan],
       MAX(us.[last_user_seek]) AS [last_user_seek]
FROM sys.dm_db_index_usage_stats AS us
WHERE DB_NAME(us.[database_id]) = 'your database name'
  AND OBJECT_NAME(us.[object_id], us.[database_id]) = 'your object'
GROUP BY us.[database_id], us.[object_id];

然后,您可以快速排序並處理日期,以查看上次使用對象的時間,而不是上次修改的時間

要查找早於特定日期的視圖/存儲過程,可以使用以下查詢

SELECT [name],create_date,modify_date
FROM sys.views (or sys.procedures) 
WHERE modify_date<= 'date_older_than_you_want'

要找出未使用的視圖,可以使用以下查詢:

   SELECT [name],create_date,modify_date
   FROM
        sys.views
   where create_date=modify_date

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM