我的经理要求知道最后一次运行一些报告以查看它们是否被使用是什么时候。他要求我们的供应商和供应商提供信息,如果来找我获得 SA 级别的权限以挖掘相关的 SQL Server。
显然,我不会这样做,但我想知道有没有办法跟踪特定查询的最后一次执行时间?
这个数据库驻留在旧的 SQL Server 2008 R2 安装上,所以我确信我的选择是有限的,如果不是不存在的话,特别是因为他想回顾 18 个月。
只是想我会问,以防至少有部分方法可以追溯到历史并跟踪这些信息。
我的经理要求知道最后一次运行一些报告以查看它们是否被使用是什么时候。他要求我们的供应商和供应商提供信息,如果来找我获得 SA 级别的权限以挖掘相关的 SQL Server。
显然,我不会这样做,但我想知道有没有办法跟踪特定查询的最后一次执行时间?
这个数据库驻留在旧的 SQL Server 2008 R2 安装上,所以我确信我的选择是有限的,如果不是不存在的话,特别是因为他想回顾 18 个月。
只是想我会问,以防至少有部分方法可以追溯到历史并跟踪这些信息。
您的服务器上次启动是什么时候?除非您正在运行某种形式的审计,否则那是遥不可及的,因为您将能够查询
sys.dm_exec_query_stats
视图和sys.dm_exec_sql_text()
表值函数。然后,您可以使用以下语句查看上次执行语句的时间:
但是,这种方法有一些限制:
DBCC FREEPROCCACHE
DBCC FREESESSIONCACHE
DBCC FREESYSTEMCACHE('ALL')
继续运行:
此代码段将告诉您 SQL Server 上次重新启动的情况。如果您没有运行捕获代码以便稍后从动态管理视图进行分析的东西,那么您将只有历史数据,直到最后一次重新启动或该数据已过期缓存。
您可以在更改代码中的数据库以匹配您的数据库时运行它:
由 Tommy_o 在 Stack Exchange 上撰写。
如果可以并且具有管理/规范能力,我建议您定期开始捕获和汇总此类数据。Sp_Whoisactive是一个很好的开始。当您升级到 2016 时,您可以在启用该功能时使用查询存储来捕获类似数据。