首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用TSQL从MSX服务器查询TSX服务器的作业历史

使用TSQL从MSX服务器查询TSX服务器的作业历史
EN

Database Administration用户
提问于 2017-07-06 12:59:19
回答 1查看 1.1K关注 0票数 3

我试图构造TSQL查询,以替代提供的各种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中,可以通过选择View history来访问每个登记服务器(TSX)的作业历史记录:

把我们带到这个窗口:

这是我试图在MSX服务器上使用TSQL查询重新创建的信息。我希望看到所有登记的服务器的作业结果和历史记录,类似于GUI窗口显示的内容。

我尝试过挖掘与工作相关的表和msdb数据库的视图,但没有结果。MSX服务器上的msdb.dbo.sysjobhistory表不包含来自登记服务器的历史记录,我似乎找不到任何关于如何收集它的好文档。这些数据甚至可以通过TSQL访问吗?如有任何相关资料,敬请见谅。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-07-06 13:20:31

无论何时,只要您想查看什么SSMS正在运行,都可以在登录时启动事件探查器/扩展事件跟踪并进行筛选。

从MSX主服务器执行此操作,并查看多服务器的作业历史记录,您将获得以下查询:

代码语言:javascript
复制
SELECT null as instance_id, 
     sj.job_id,
     job_name = sj.name,
     null as step_id,
     null as step_name,
     null as sql_message_id,
     null as sql_severity,
     sjh.last_outcome_message as message,
     sjh.last_run_outcome as run_status,
     sjh.last_run_date as run_date,
     sjh.last_run_time as run_time,
    sjh.last_run_duration as run_duration,
     null as operator_emailed,
     null as operator_netsentname,
     null as operator_paged,
     null as retries_attempted,
     sts.server_name as server
  FROM msdb.dbo.sysjobservers                sjh
  JOIN msdb.dbo.systargetservers sts ON (sts.server_id = sjh.server_id)
  JOIN msdb.dbo.sysjobs_view     sj  ON(sj.job_id = sjh.job_id)
  WHERE sj.name = 'MULTI_SERVER_JOB_NAME'
票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/178159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档