How to find a database's last used date in SQL Server

How to find a database's last used date in SQL Server 2000

DECLARE @SQL NVARCHAR(2000)

DECLARE @filename NVARCHAR(2000)

DECLARE @DB sysname

create table #temp (id int identity(1,1),Alternate_Name varchar(500),

Size bigint,

creationDate int,

creationTime int,

LastWrittenDate int,

LastWrittenTime int,

LastAccessedDate int,

LastAccessedTime int,

Attribute int ) 

CREATE TABLE #temp1 (

id int identity(1,1),

name varchar(500))

DECLARE curDB CURSOR FOR

select b.name ,a.filename 

from sysaltfiles a inner join 

sysdatabases b on a.dbid =b.dbid 

where a.name not in ('master','mastlog','tempdev','templog','modeldev','modellog','msdbdata','msdblog')

and a.filename like '%.mdf%'

OPEN curDB

FETCH NEXT FROM curDB INTO @db,@filename

WHILE @@FETCH_STATUS = 0

BEGIN

select @SQL ='exec xp_getfiledetails'+''''+@filename+''''

insert into #temp1(name) values (@db)

insert into #Temp (Alternate_Name,Size,creationDate,creationTime,LastWrittenDate,LastWrittenTime, 

LastAccessedDate,LastAccessedTime,Attribute) exec sp_executesql @SQL

FETCH NEXT FROM curDB INTO @db,@filename

END

CLOSE curDB

DEALLOCATE curDB 

select a.name,b.LastWrittenDate,b.LastAccessedDate from #temp1 a

inner join #temp b 

on a.id =b.id

drop table #Temp

drop table #temp1

 ------------------------------------------------------------------------------------------------------

How to find a database's last used date in SQL Server 2005/2008/2014

;;WITH myCTE AS

(

SELECT

  DB_NAME(database_id) AS TheDatabase,

  last_user_seek,

  last_user_scan,

  last_user_lookup,

  last_user_update

FROM sys.dm_db_index_usage_stats

)

SELECT 

  ServerRestartedDate = (SELECT CREATE_DATE FROM sys.databases where name='tempdb'),

  x.TheDatabase,

  MAX(x.last_read) AS  last_read,

  MAX(x.last_write) AS last_write

FROM

(

SELECT TheDatabase,last_user_seek AS last_read, NULL AS last_write FROM myCTE

  UNION ALL

SELECT TheDatabase,last_user_scan, NULL FROM myCTE

  UNION ALL

SELECT TheDatabase,last_user_lookup, NULL FROM myCTE

  UNION ALL

SELECT TheDatabase,NULL, last_user_update FROM myCTE

) AS x

GROUP BY TheDatabase

ORDER BY TheDatabase asc

SELECT @@ServerName AS server

 ,NAME AS dbname

 ,COUNT(STATUS) AS number_of_connections

 ,GETDATE() AS timestamp

FROM sys.databases sd

LEFT JOIN sys.sysprocesses sp ON sd.database_id = sp.dbid

WHERE database_id NOT BETWEEN 1 AND 4

GROUP BY NAME 

ORDER BY NAME asc

--use [ocafinal]

--select MAX(create_date),MAX( modify_date) from sys.objects