我们可以通过以下语句查询单个数据库中所有表的创建日期、最后更新日期:

select * from sys.tables

QQ截图20151222150248.png


同时也可以通过以下语句查询服务器上所有在线的数据库:

select * from sys.databases where state_desc='online'


依此,我们可以根据该数据库中所有表的最大modify_date为准,建立一个临时表#table,记录下每一个数据库的库名和最后更新时间,脚本代码如下:

--创建临时表
if OBJECT_ID('tempdb..#table') is not null 
drop table #table
create table #table
(
    dbName varchar(50),
    modifyDate datetime
)
declare @execSQL nvarchar(MAX)
declare sqlCur cursor
for 
    --拼接SQL语句,插入数据库名和最后数据表的更新时间到临时表
    select 
    'use '+name
    +' declare @modifyDate dateTime '
    +' select @modifyDate=Max(modify_date) from sys.tables '
    +' insert into #table(dbName, modifyDate) values('''+name+''', @modifyDate)' as sqlStr 
    from sys.databases where state_desc='online'
open sqlCur
fetch next from sqlCur into @execSQL
while @@fetch_status=0
BEGIN
    exec(@execSQL)
    fetch next from sqlCur into @execSQL
END
--查询临时表,得出数据库和数据库的最后更新时间
select * from #table
close sqlCur
deallocate sqlCur

成功查询出来的结果如下:

QQ截图20151222151245.png