我需要帮助来编写SQL 2005服务器上的所有数据库的脚本,并可能查看它们的活动(特别是上次活动的日期)。 我需要删除服务器上不活动的所有数据库。
答案 0 :(得分:2)
执行此操作的最佳方法是在服务器上运行非常轻量级的探查器跟踪,并仅记录“审核登录”事件。让它运行一周/每月/无论如何,然后查看跟踪日志以查看当前正在使用的数据库。如果您运行查询,那么您将只看到正在使用的当前数据库,而不是上周/月使用的数据库。
答案 1 :(得分:1)
这是一个技巧:使用SQL Server动态管理视图来获取有关已使用哪些索引的数据。
此查询将为您提供每个数据库中最近使用的索引。如果没有使用索引,那么数据可能也没有被使用。
SELECT db.[name] AS DatabaseName
, (SELECT TOP 1 last_user_seek FROM sys.dm_db_index_usage_stats ix1 WHERE ix1.database_id = db.database_id ORDER BY last_user_seek DESC) AS last_user_seek
, (SELECT TOP 1 last_user_scan FROM sys.dm_db_index_usage_stats ix1 WHERE ix1.database_id = db.database_id ORDER BY last_user_scan DESC) AS last_user_scan
, (SELECT TOP 1 last_user_lookup FROM sys.dm_db_index_usage_stats ix1 WHERE ix1.database_id = db.database_id ORDER BY last_user_lookup DESC) AS last_user_lookup
, (SELECT TOP 1 last_user_update FROM sys.dm_db_index_usage_stats ix1 WHERE ix1.database_id = db.database_id ORDER BY last_user_update DESC) AS last_user_update
FROM sys.databases db
ORDER BY db.[name]
一个警告:如果您的维护计划设置为定期自动重新索引数据库,或者是第三方碎片整理程序,那么这些日期可能是人为的最近日期。
答案 2 :(得分:0)
答案 3 :(得分:0)
对活动数据库的查询可以按如下方式进行细化
SELECT name
FROM master..sysdatabases
WHERE DATABASEPROPERTY(name, 'IsOffline') = 0
AND DATABASEPROPERTY(name, 'IsReadOnly') = 0
AND DATABASEPROPERTY(name, 'IsDetached') = 0
AND DATALENGTH(sid) > 1
ORDER BY name