SQL Server代理作业监视(作业是否开始了?)

时间:2019-06-26 13:04:00

标签: sql-server monitoring sql-agent-job

我是一名BI开发人员,并受托承担DBA的任务。这是关于分别监视SQL Server代理作业以获取有关以下关键指标的信息,这些指标将在所有前端之后进行准备:

  1. 服务器代理作业和作业步骤失败
  2. 作业和作业步骤的运行时间
  3. 找出工作是否已经开始
  4. 内存分配:评估和监视移动和存储的数据量

目标是监视并在必要时提供关键数字差异的指示。

我得到了前两点。在每种情况下,我都在表中显示是否作业或步骤是否启用/禁用。我还记录了每个步骤的术语,可以使用阈值来警告是否达到临界范围。

对我来说最大的问题是什至没有开始的工作(第3点)。据我所知,这些没有记录在MSDB表中。我想知道什么时候工作或工作步骤还没有开始。您能告诉我如何获取此信息吗?也许有人已经准备好适合该问题的脚本了?

关于内存使用情况,我对硬盘上还有多少可用空间,分区有多大以及消耗随时间的变化感兴趣。

在互联网上,我找不到第三和第四点。我将非常感谢您的帮助! (原谅我我的英语不好:))

1 个答案:

答案 0 :(得分:0)

结果是,当计划下一次运行Job xy时。他没有出现在表格中。 但是,他出现在作业历史记录的SQL Server代理中。但是,在他下次运行时,该信息丢失了。 我的计划是从sysjobactivity表中获取next_scheduled_run_date列,然后将稍后的运行与run_requested_Date列进行比较。 但是很显然,sysjobactivity表中缺少一些记录。另一个包含target_start时间的表是sysjobschedules。 不幸的是,这只有当前的计划日期。我还没有找到另一个包含目标run_dates历史的表。 当然,可以有一个手动表(类似于目标值),但这会花费很多精力。