我们使用在 SQL 2000 服务器上运行的 sql 代理作业每十分钟从我们的业务系统导入数据。该作业运行多个步骤,通常需要大约 5 到 6 分钟才能运行。该数据用于各种包装过程。
这通常会毫无问题地运行,但有时我们会遇到步骤“卡住”的问题,这意味着我们无法从业务系统中获取新数据。
我想在我们办公室的屏幕上显示工作的状态,以便我们查看是否有问题。是否可以在数据库上执行查询以返回作业的状态,如果它正在运行,它在哪一步,它已经运行了多长时间以及下次计划运行的时间?
我们使用在 SQL 2000 服务器上运行的 sql 代理作业每十分钟从我们的业务系统导入数据。该作业运行多个步骤,通常需要大约 5 到 6 分钟才能运行。该数据用于各种包装过程。
这通常会毫无问题地运行,但有时我们会遇到步骤“卡住”的问题,这意味着我们无法从业务系统中获取新数据。
我想在我们办公室的屏幕上显示工作的状态,以便我们查看是否有问题。是否可以在数据库上执行查询以返回作业的状态,如果它正在运行,它在哪一步,它已经运行了多长时间以及下次计划运行的时间?
下面的代码将为您提供所有作业的状态,并且应该得到支持,否则使用 msdb..sysjobhistory 应该可以解决问题。
SQL Server 代理将作业数据记录到 msdb..sysjobhistory您可以使用该表来跟踪作业和作业步骤的成功/失败并查看其是否正在运行。
您可以使用msdb..sysjobschedules来计算下一个计划的运行时间。
我经常使用以下查询来确定 SQL 服务器上当前运行的内容。它不会特定于正在运行的代理,但它可以让您了解当前正在执行的特定查询: