【发布时间】:2020-07-21 06:51:44
【问题描述】:
我正在尝试获取 Azure 服务器中每个数据库的上次访问日期和时间。到目前为止,我发现下面的查询为我们提供了最后一次访问:
'SELECT max(last_user_update) lastUpdate ,max(last_user_scan) as last_user_scan FROM sys.dm_db_index_usage_stats'
但是,这里的问题是,我必须对每个数据库运行此查询以确定最后一次访问。我没有找到直接在主数据库上运行单个查询的方法,可以满足我的需求。
我知道如果服务器重新启动,最后访问日期会被清除并重置。
任何帮助将不胜感激!
【问题讨论】:
-
"last access" - 除非您启用审核,否则 SQL Server 不会记录该数据 - 但即便如此,它也不是特别有用的信息。考虑诸如缓存和只读辅助文件之类的事情……如果数据库处于
READ_ONLY ON模式,则根本不会记录任何内容。 -
@Dai,已经考虑过这种情况。上面的查询给了我我需要的东西,但唯一的问题是,我必须为每个数据库打开一个新的查询编辑器并对那个数据库运行这个查询。我一直在寻找更好的方法
-
Azure SQL 的“服务器”实际上并不存在 - 它们只是共享一些安全
LOGIN设置的数据库的逻辑分组。这就是USE语句在 SSMS 中不起作用的原因。您可以通过 shell 脚本或 Linqpad 查询完成您所追求的目标,但不能通过单个 SSMS 查询完成,抱歉。 -
@Dai,我有这种感觉。谢谢回复。我打算试试 Shell-Script 看看能不能达到我需要的效果。
标签: sql sql-server azure azure-sql-database