我正在尝试弄清楚如何解决 SQL Server Agent (2012) 的问题。一项每晚运行的作业(使用 SQL Server Agent 作为其调度程序)已经运行了一年多,每 2 到 4 秒运行一次,最近却运行了 7 个小时以上?
我在服务器 SQL 日志或服务器事件日志中找不到任何内容来解释长期运行。时间似乎也与工作量无关,因为该作业所做的工作基本上每晚都相同(用于计费的每日总数)。该作业也正确完成。(虽然它导致了其他问题,但它们与该作业未设计为在多个日期运行有关,而这正是它最终所做的)
作业的第 2 步计算并写入一系列带有时间戳的记录。所有预期的记录都在大约 2 秒内写入。这就是该步骤所做的全部工作,因此它似乎很快就完成了,但 SQL 代理日志表明该特定步骤需要 7 小时 30 分钟才能运行。下一步也是在那时完成的。
有没有办法获取有关 SQL 当时正在做什么的更多信息?或者,是否可以限制作业运行的总时间?换句话说,让它出错,这样至少我们会知道。
我已经运行了 dbcc 检查 DB(没有错误)。
SQL版本是11.03339 操作系统是Win 2008R2 Enterprise
该问题迄今为止仅出现过一次。
在此先感谢您的帮助。
答案1
您可以采取的一种方法是按照此链接中的步骤操作 -https://www.mssqltips.com/sqlservertip/1861/sql-server-monitoring-scripts-with-the-dmvs/。正如文章所解释的,您可以设置一个作业来捕获 SQL 语句并将其写入表中,然后您就会确切地知道何时执行了什么。