在每个月的特定时间和日期使用数据库查找外部进程

Find external process using databse on particular time and day every month

在过去 2 个月的最后一个星期日上午 9 点 47 分,我们在 SQL 服务器中被阻塞。它持续 2-3 小时,然后自行消失。我们在本月的任何其他时间都不会受到任何阻塞。

我如何查看特定时间发生的事情?

我尝试了下面的查询,但它没有显示当天在特定时间执行的任何操作。最后一个条目是问题开始前 35 分钟,下一个条目是问题开始后 30 分钟。

SELECT deqs.last_execution_time AS [Time], dest.text AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DESC

我还检查了 SQL Server Agent 中的计划作业,但没有正常 运行(备份、CDC、索引重建等)不正常的东西处于打开状态。

因此,我的问题是:如何找到在每个月的最后一个星期日的特定时间哪个外部进程正在使用数据库?如果有任何提示和建议,我将不胜感激。

sys.dm_exec_query_stats 只显示缓存的执行计划。这不太可能对你有帮助。

相反,由于这种情况发生时是可以预测的,您可以使用 sys.dm_exec_connections 获取活动连接(然后您可以使用任务管理器来处理使用相同端口的进程 - 如果它是 运行ning在您有权访问的机器上)。要查找正在执行的查询类型,请使用 sys.dm_exec_requests.

这必须是 运行 而实际负载正在发生 - 因此您可能希望在问题发生时手动执行,或者您需要安排其执行并记录结果.