SQL Server/SQL Server 자주보는

[MSSQL] TABLE 에 마지막으로 접근한 시간 확인하기

꽁담 2020. 2. 10. 00:50

dm_db_index_usage_stats DMV 뷰


이 DMV 뷰를 통해서 테이블에 마지막으로 접근한 시간을 확인할 수 있습니다.


뷰의 명칭만 보면 인덱스만 확인할 수 있는 것으로 착각할 수 있으나,

인덱스가 없는 테이블에도 적용이 가능합니다.


인덱스가 없는 테이블에 접근하는 경우 DMV 뷰의 last_user_scan 컬럼에 마지막 접근 시간이 UPDATE 됩니다.



TABLE 에 마지막으로 접근한 시간을 확인하는 쿼리



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
select DB_NAME(usage.database_id) AS db_name,
       schema_name, 
       table_name, 
       max(last_access) as last_access 
from(
    select sta.database_id as database_id,
           schema_name(schema_id) as schema_name,
           name as table_name,
           (select max(last_access) 
            from (values(last_user_seek),
                        (last_user_scan),
                        (last_user_lookup), 
                        (last_user_update)) as tmp(last_access))
                as last_access
from sys.dm_db_index_usage_stats sta
join sys.objects obj
     on obj.object_id = sta.object_id
     and obj.type = 'U'
     and sta.database_id = DB_ID()
) usage
group by usage.database_id,
         schema_name, 
         table_name
order by last_access desc;
cs