SQL Server中查询服务器上所有数据库的最后更新时间

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

sql
select * from sys.tables

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

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

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

sql
--创建临时表if OBJECT_ID('tempdb..#table') is not nulldrop table #tablecreate table #table(    dbName varchar(50),    modifyDate datetime)declare @execSQL nvarchar(MAX)declare sqlCur cursorfor    --拼接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 sqlCurfetch next from sqlCur into @execSQLwhile @@fetch_status=0BEGIN    exec(@execSQL)    fetch next from sqlCur into @execSQLEND--查询临时表,得出数据库和数据库的最后更新时间select * from #tableclose sqlCurdeallocate sqlCur

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

← 返回 Note