Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 非活动数据库_Sql Server_Database - Fatal编程技术网

Sql server 非活动数据库

Sql server 非活动数据库,sql-server,database,Sql Server,Database,在我们公司的SQL server上,有一些数据库似乎没有被使用。有没有办法确定某人上次使用某个特定数据库、连接到该数据库或对其运行查询的时间?我认为没有关于上次使用日期的每个数据库统计数据 您可以做的是将SQL Server profiler附加到数据库,并在数据库名称上设置一个过滤器。你可以让它运行几周,看看是否有任何活动 另一个选项是检查数据库属性->报告->标准报告->索引使用统计。如果任何索引的最后一次使用非常旧,这很好地表明数据库没有被使用 或者,看一看。我自己没有用过,但它看起来可能

在我们公司的SQL server上,有一些数据库似乎没有被使用。有没有办法确定某人上次使用某个特定数据库、连接到该数据库或对其运行查询的时间?

我认为没有关于上次使用日期的每个数据库统计数据

您可以做的是将SQL Server profiler附加到数据库,并在数据库名称上设置一个过滤器。你可以让它运行几周,看看是否有任何活动

另一个选项是检查数据库属性->报告->标准报告->索引使用统计。如果任何索引的最后一次使用非常旧,这很好地表明数据库没有被使用


或者,看一看。我自己没有用过,但它看起来可能适合您的需要。

我认为没有关于上次使用日期的数据库统计

您可以做的是将SQL Server profiler附加到数据库,并在数据库名称上设置一个过滤器。你可以让它运行几周,看看是否有任何活动

另一个选项是检查数据库属性->报告->标准报告->索引使用统计。如果任何索引的最后一次使用非常旧,这很好地表明数据库没有被使用


或者,看一看。我自己没有用过,但它看起来可能适合您的需要。

这里实际上是我使用的一个查询。它告诉您自上次重新启动以来上次使用的数据库。它给出了最后一次使用的日期和最后一次使用后的天数。这应该是你需要的。它是动态的,可以在任何服务器上工作,因为它使用系统视图。在主数据库上运行此命令

DECLARE @RESTART DATETIME

SELECT @RESTART = login_time 
FROM sysprocesses 
WHERE spid = 1 

SELECT @@SERVERNAME AS SERVER_NAME
,DB_NAME(db.database_id) AS 'DATABASE'
, db.state_desc AS 'State'
, @RESTART AS 'SYSTEM_RESTART'
, MAX(coalesce(us.last_user_seek, us.last_user_scan,     us.last_user_lookup,@RESTART)) AS 'LAST_USE'
,CASE 
WHEN DATEDIFF(DAY,@RESTART, MAX(coalesce(us.last_user_seek, us.last_user_scan, us.last_user_lookup,@RESTART))) = 0 
THEN 'Prior to restart ' + CONVERT(VARCHAR(5),DATEDIFF(DAY,MAX(coalesce(us.last_user_seek, us.last_user_scan, us.last_user_lookup,@RESTART)), CURRENT_TIMESTAMP)) +' days ago'
ELSE CONVERT(VARCHAR(5),DATEDIFF(DAY,MAX(coalesce(us.last_user_seek, us.last_user_scan, us.last_user_lookup,@RESTART)), CURRENT_TIMESTAMP))
END AS 'DAYS_SINCE_LAST_USE'
FROM sys.databases db
LEFT OUTER JOIN sys.dm_db_index_usage_stats us ON db.database_id = us.database_id
/* IF you want to exclude offlinbe Dbs in your output
   then remove the comment '--AND STATE != 6' below. 
*/
WHERE db.database_id > 4 --AND STATE != 6
GROUP BY DB_NAME(db.database_id), db.state_desc 
ORDER BY DB_NAME(db.database_id)

这里实际上是我使用的一个查询。它告诉您自上次重新启动以来上次使用的数据库。它给出了最后一次使用的日期和最后一次使用后的天数。这应该是你需要的。它是动态的,可以在任何服务器上工作,因为它使用系统视图。在主数据库上运行此命令

DECLARE @RESTART DATETIME

SELECT @RESTART = login_time 
FROM sysprocesses 
WHERE spid = 1 

SELECT @@SERVERNAME AS SERVER_NAME
,DB_NAME(db.database_id) AS 'DATABASE'
, db.state_desc AS 'State'
, @RESTART AS 'SYSTEM_RESTART'
, MAX(coalesce(us.last_user_seek, us.last_user_scan,     us.last_user_lookup,@RESTART)) AS 'LAST_USE'
,CASE 
WHEN DATEDIFF(DAY,@RESTART, MAX(coalesce(us.last_user_seek, us.last_user_scan, us.last_user_lookup,@RESTART))) = 0 
THEN 'Prior to restart ' + CONVERT(VARCHAR(5),DATEDIFF(DAY,MAX(coalesce(us.last_user_seek, us.last_user_scan, us.last_user_lookup,@RESTART)), CURRENT_TIMESTAMP)) +' days ago'
ELSE CONVERT(VARCHAR(5),DATEDIFF(DAY,MAX(coalesce(us.last_user_seek, us.last_user_scan, us.last_user_lookup,@RESTART)), CURRENT_TIMESTAMP))
END AS 'DAYS_SINCE_LAST_USE'
FROM sys.databases db
LEFT OUTER JOIN sys.dm_db_index_usage_stats us ON db.database_id = us.database_id
/* IF you want to exclude offlinbe Dbs in your output
   then remove the comment '--AND STATE != 6' below. 
*/
WHERE db.database_id > 4 --AND STATE != 6
GROUP BY DB_NAME(db.database_id), db.state_desc 
ORDER BY DB_NAME(db.database_id)

+1-值得一看亚伦·伯特朗关于这个主题的博客文章:你应该把亚伦的文章的链接作为答案-我认为这是海报能得到的最好的答案。+1-值得一看亚伦·伯特朗关于这个主题的博客文章:你应该把亚伦的文章的链接作为答案-我认为这是海报能得到的最好的答案。