• Jason-299789 (1/28/2013)


    No problem, let me know how it turns out.

    Cool! This works well. Here is the modified (few compilation issues rectified) and tested version.

    ;WITH Cte_Src AS (

    SELECT

    Db_name(database_id) databasename

    ,Max(x.Last_Date) Last_Access_time

    ,Getdate() curr_time

    FROM

    sys.dm_db_index_usage_stats

    CROSS APPLY(VALUES(last_user_update)

    ,(last_user_lookup)

    ,(last_user_scan)

    ,(last_user_seek)) x (last_date)

    WHERE last_date IS NOT NULL

    AND Db_name(database_id) NOT IN ('msdb','master','tempdb')

    GROUP BY database_id

    )

    MERGE master..AuditTable AS tgt

    USING Cte_Src AS src

    ON tgt.databasename = src.databasename

    WHEN MATCHED AND src.Last_Access_time != tgt.Last_Access_time

    THEN

    UPDATE SET

    tgt.last_access_time = src.last_access_time

    , tgt.no_of_days = DateDiff(d,src.last_access_time, src.curr_time)

    , tgt.last_upd_dtm = src.curr_time

    WHEN NOT MATCHED BY TARGET

    THEN INSERT (DatabaseName,last_access_time,no_of_days,last_upd_dtm)

    VALUES ( src.DatabaseName,src.last_access_time,DateDiff(d,src.last_access_time, src.curr_time),GETDATE());

    Thanks!

    ~ Lokesh Vij


    Guidelines for quicker answers on T-SQL question[/url]
    Guidelines for answers on Performance questions

    Link to my Blog Post --> www.SQLPathy.com[/url]

    Follow me @Twitter