我正在尝试获取Azure Server中每个数据库的上次访问日期和时间。我到目前为止发现的是下面的查询,该查询为我们提供了最后的访问权限:
'SELECT max(last_user_update) lastUpdate ,max(last_user_scan) as last_user_scan FROM sys.dm_db_index_usage_stats'
但是,这里的问题是,我必须对每个数据库运行此查询才能确定最后一次访问。我没有找到一种可以直接在主数据库上运行单个查询的方法,该查询可以满足我的需求。
我知道,如果服务器重新启动,上次访问日期将被清除并重置。
任何帮助将不胜感激!
答案 0 :(得分:0)
您可以做的是,使用SQLCMD
生成输出文件,然后使用DOS Shell将结果附加到文件中。您必须先连接一个数据库,然后获取结果并追加到文件中。
仔细观察,第一个SQLCMD创建输出文件(>
),随后的SQLCMD附加到输出文件(>>
)。
SQLCMD -S ServerName -D DatabaseName1 -Q "SELECT max(last_user_update) lastUpdate
,max(last_user_scan) as last_user_scan, DB_NAME() AS Database_Name FROM
sys.dm_db_index_usage_stats" > c:\dev\userAccessDetails.txt #creates outputfile
SQLCMD -S ServerName -D DatabaseName1 -Q "SELECT max(last_user_update) lastUpdate
,max(last_user_scan) as last_user_scan, DB_NAME() AS Database_Name FROM
sys.dm_db_index_usage_stats" >> c:\dev\userAccessDetails.txt ##appends to output file