我正在尝试构建 TSQL 查询来替代 SQL Server Management Studio 提供的各种 GUI 工具。这些工具之一是Job Activity Monitor
,可通过Object Explorer
窗口访问。
我们当前的数据库环境包括一个具有 3 个节点(一个主节点和两个只读副本)的集群,以及一个位于集群旁边的独立服务器。
为简洁起见,我将节点称为N1、N2 和 N3,以及独立服务器S1。
最近,我们Multi-Server Job Administration
为我们的服务器配置,使用 S1 作为 MSX(主)服务器,N1、N2 和 N3 作为 TSX(目标)服务器。
这意味着在集群节点上运行的 SQL 代理作业是从 S1 创建和管理的。
TSX 服务器向 MSX 服务器报告它们的状态、结果等,可以使用Job Activity Monitor
. 从 中Job Activity Monitor
,可以通过选择访问每个登记服务器 (TSX) 的作业历史记录View history
:
这是我在 MSX 服务器上使用 TSQL 查询尝试重新创建的信息。我想查看所有已登记服务器的作业结果和历史记录,类似于 GUI 窗口显示的内容。
我试过挖掘与工作相关的表和msdb
数据库的视图,但没有成功。MSX 服务器上的msdb.dbo.sysjobhistory
表不包含已登记服务器的历史记录,而且我似乎找不到任何关于我将如何收集它的好文档。这些数据甚至可以通过 TSQL 访问吗?非常感谢任何相关资源。
每当您想查看正在运行的 SSMS 时,您始终可以启动 Profiler/Extended Events 跟踪并过滤您的登录信息。
从 MSX master 执行此操作并查看多服务器的作业历史记录会得到以下查询: