开发服务器判断哪些DB长时间没有使用

--开发服务器判断哪些DB长时间没有使用
DECLARE @lastDDLDate DATETIME
SET @lastDDLDate='2017-01-01'

DECLARE @dbs TABLE (
	rowNum INT IDENTITY(1,1) PRIMARY KEY
	,dbName NVARCHAR(300)
	,lastCreateTime DATETIME
	,lastModifyTime DATETIME
	,cnt INT
	,statistic_time DATETIME
	,last_user_update DATETIME
	,last_user_seek DATETIME
	,last_user_scan DATETIME
	,last_user_lookup DATETIME
)
INSERT INTO @dbs(dbName)
SELECT NAME FROM sys.databases AS d WHERE d.name NOT IN ('tempdb','master','model','msdb')

DECLARE @i INT,@imax INT,@sql NVARCHAR(MAX),@dbName NVARCHAR(300),@cnt INT
,@lastCreateTime DATETIME
,@lastModifyTime DATETIME
,@statistic_time DATETIME
,@last_user_update DATETIME
,@last_user_seek DATETIME
,@last_user_scan DATETIME
,@last_user_lookup DATETIME
SELECT @i=1,@imax=MAX(rowNum) FROM @dbs
WHILE @i<=@imax
BEGIN
	SELECT @dbName=dbName FROM @dbs WHERE rowNum=@i
	SET @sql='use '+@dbName+'
	SELECT @cnt=count(1) FROM sys.objects AS o WHERE o.create_date>@lastDDLDate OR o.modify_date>@lastDDLDate'
	EXEC sp_executesql @sql,N'@lastDDLDate datetime,@cnt int out',@lastDDLDate,@cnt OUT
	SET @sql='use '+@dbName+'
	SELECT @lastCreateTime=max(create_date),@lastModifyTime=max(modify_date) FROM sys.objects AS o'
	EXEC sp_executesql @sql,N'@lastCreateTime datetime out,@lastModifyTime datetime out',@lastCreateTime out,@lastModifyTime OUT
	SET @sql='use '+@dbName+'
SELECT  @statistic_time=max(STATS_DATE(ixu.object_id, ixu.index_id)) ,
        @last_user_update=max(ixu.last_user_update) ,
        @last_user_seek=max(ixu.last_user_seek) ,
        @last_user_scan=max(ixu.last_user_scan) ,
        @last_user_lookup=max(ixu.last_user_lookup)
FROM    sys.dm_db_index_usage_stats ixu
        INNER JOIN sys.indexes ix
        ON ixu.object_id = ix.object_id
           AND ixu.index_id = ix.index_id
        INNER JOIN sys.objects ob
        ON ixu.object_id = ob.object_id
WHERE   ob.type = ''U''
        AND ob.is_ms_shipped = 0
        AND ixu.database_id = DB_ID()
	'
	EXEC sp_executesql @sql,N'@statistic_time DATETIME OUT
,@last_user_update DATETIME OUT
,@last_user_seek DATETIME OUT
,@last_user_scan DATETIME OUT
,@last_user_lookup DATETIME OUT',@statistic_time OUT
,@last_user_update OUT
,@last_user_seek OUT
,@last_user_scan OUT
,@last_user_lookup OUT
	
	UPDATE @dbs SET 
		cnt = @cnt
		,lastCreateTime =@lastCreateTime 
		,lastModifyTime =@lastModifyTime  
		,statistic_time =@statistic_time
		,last_user_update=@last_user_update
		,last_user_seek=@last_user_seek
		,last_user_scan =@last_user_scan
		,last_user_lookup=@last_user_lookup
	WHERE rowNum=@i
	SET @i=@i+1
END

SELECT * FROM @dbs ORDER BY lastModifyTime ASC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值