本篇文章是SQL Server代理系列的第七篇,详细内容请参考原文
在这一系列的上一篇,你创建并配置SQL Server代理作业。每个作业有一个或多个步骤,可能包含大量的工作流。在这篇文章中,将查看作业活动监视器。作业活动监视器是系统管理工具来运行工作,查看作业历史记录,并启用/禁用作业。本文同样会回顾一些作业活动监视器调用的存储过程,你可以直接调用过程做你自己的自定义任务监控。
SQL Server代理作业活动监视器
SQL Server代理作业活动监视器的主要机制是监视作业运行,以及查看代理已运行的作业。作业活动监视器是一个单独的对话框,作业活动监视器使用系统存储过程和系统表来显示SQL Server代理作业状态。
使用作业监视器
启动SSMS,对象资源管理器下导航到SQL Server代理节点。你应该看到作业活动监视器,如图7.1所示。双击作业活动监视器,或右键点击菜单项并选择查看作业活动,你会看到作业活动监视器启动。你可能注意到标题也包含SSMS连接上的服务器名称。在我的例子使用的是“(本地)”(如图7.2所示)。
图7.1 启动作业活动监视器
图7.2 作业活动监视器对话框
在作业活动监视器下你可以看到实例上定义的所有代理作业。你可以看到哪些作业已启用,它们最近是否有运行,作业是否正在运行,上次运行结果是否成功,定期作业的下次运行时间,如果你的作业有分类,类别也会显示。
在代理作业活动的每一列都是可排序的--点击列的名称。例如,你可能想按照作业类别排序。作业类别是一个我们没有谈论到主题,所以我们将简要探讨创建和指定的作业类别。
作业类别
在作业活动监视器中用作业类别来分组作业非常有用。有一些内置的系统作业/任务作业类别。你也可以创建你自己的作业类别。SSMS->SQL Server代理->作业,右击作业,并选择管理作业类别。这将启动管理作业类别对话框,如图7.3所示。
图7.3 管理作业类别
点击添加…按钮创建一个新的作业类别。命名你的作业类别(本例中"backups"),然后单击“显示所有作业”复选框,列出你当前的SQL Server代理作业。勾选Backup Master作业,如图7.4所示。你也可以后期通过编辑作业属性,分配作业类别。
图7.4 创建作业类别并分配作业
再次单击“添加”按钮,并添加第二类别,命名为“Examples”,并选择这系列创建的其他示例作业。单击确定,然后单击“取消”关闭对话框(别担心,它不会撤消之前的操作,它只是在关闭管理作业类别对话框)。
作业活动监视器筛选设置
现在你有一些有趣的数据过滤和排序,重新打开或者退回到作业活动监视器。如果你点击网格中的“类别”的标题,你会看到作业按照新创建的类别排序(如图7.5所示)。
图7.5 按类别排序
你可以通过任何显示列进行排序,但是当你添加更多的作业时,对话框中的信息越来越多,要找到需要的作业将变得困难。
在对话框的顶部,你可以选择刷新或者过滤对话框。如果你有一百或更多的作业(我知道很多DBA管理许多作业),你可能会使用过滤设置对话框限制你想查看的作业。点击过滤,将看到筛选设置对话框。在类别中输入backups(如图7.6所示),并勾选对话框底部的“应用筛选器”复选框。单击“确定”,你将会看到图7.7,只显示作业类别为backups的作业。
图7.6 作业活动监视器筛选设置
图7.7 作业活动监视器应用筛选
注意,在对话框的左侧,你会看到一个过滤器被应用。如果你想再次看到所有的工作,你必须再次点击过滤,取消“应用筛选器”选项。
使用作业活动监视器来监控作业
你可以设置作业活动监视器自动刷新,那样你就能及时查看失败的作业。在作业活动监视器,点击“查看刷新设置”,你会看到刷新设置对话框,如图7.8所示。在这个例子中,勾选自动刷新间隔,然后更改秒从默认的60下降到30(具体的数值取决于你的监控)。
图7.8 作业活动监视器设置自动刷新
单击“确定”,现在的对话框会每30秒自动刷新。在上次的运行结果结合过滤或排序,就非常容易定位到失败的作业。
最后,如果你想管理作业(即启用、禁用、运行作业、或修改作业属性),只需右击作业活动监视器中的作业。这些和之前的SQL Server代理步骤文章相似,所以不会再次复述。
作业活动监视器下系统表和存储过程
作业活动监视器对应一些系统表和系统存储过程。SQL Server代理启动时,会往msdb.dbo.syssessions表插入新行,记录SQL Server代理启动的时间、session_id。每次启动服务时,所有已存在的SQL Server代理作业快照插入到msdb.dbo.sysjobactivity表。该表是用来记录作业活动监视器中的信息,如作业上次运行时间,下次运行时间。此外,一个指向作业历史记录的指针(job_history_id列)对应到msdb.dbo.sysjobhistory表。
另外,作业活动监视器还包括来自其他系统表,如msdb.dbo.sysjobs、msdb.dbo.sysjobsteps,和一些扩展存储过程如master.dbo.xp_sqlagent_enum_jobs。所有这些表和过程被包裹在系统存储过程msdb.dbo.sp_help_job。
如果你想监控你的作业但不使用SSMS,你可以简单地运行sp_help_job。你可以创建一个作业将sp_help_job运行结果邮件到你的手机上。
下一篇
SQL Server作业活动监视器允许你灵活的使用图形界面来监控作业活动和作业进展。你可以排序、分类、过滤你的感兴趣的作业。你也可以运行系统存储,如果你不想使用图形界面。
在我们的下一个篇,我们将探讨如何在SQL Server代理中使用外部程序,例如操作系统或PowerShell命令。