获取SQL Agent作业的详细输出


16

我们有一个SQL Server代理作业,该作业运行维护计划以重新索引服务器上的所有数据库。最近,这已失败,但是作业历史记录无法提供足够的信息来诊断问题。

在作业历史记录中,它指出作业失败。该作业已由用户foo \ bar调用。运行的最后一步是步骤1(重建索引)。

在详细信息窗口中,有以下格式的多条消息:

Executing query "ALTER INDEX [something] ON [a...".: 0% complete  End Progress  Progress: 2015-03-15 22:51:23.67     Source: Rebuild Index Task

正在运行的SQL语句被截断,并且我假设该语句的输出也被截断了,这使我无法识别出哪个特定的语句失败以及为什么。有什么方法可以提取这些消息的全文吗?


1
我认为@kin在回答您的初始问题方面做得很好,但是我认为这更多是调试问题。如果您知道它失败的索引,那么我将尝试确定为什么该特定索引失败了。您可以看到使用的sql代码吗?它在存储过程中吗?您可以做几件事来缩小范围。创建仅具有该索引的作业。在作业运行时运行sql trace。捕获使用的sql,然后尝试重现该问题。
Swears-a-Sir爵士

Answers:


18

有什么方法可以提取这些消息的全文吗?

您可以通过两种方式实现它-进入工作步骤,然后选择高级标签:

一种。输出到文件(<==我的首选方法)

在此处输入图片说明

b。“登录到表”和“在历史记录中包括步骤输出”(<==您需要进行msdb..sysjobhistory长期修整,因为消息存储为nvarchar(max)而不是nvarchar(1024)

在此处输入图片说明

为了查看其他记录的信息,您需要使用此存储过程sp_help_jobsteplog,也可以msdb.dbo.sysjobstepslogs直接查询该表。

更多信息在这里


干杯,我去试试。只是让您知道,该表的正确名称是msdb.dbo.sysjobstepslogs(“ logs”而不是“ log”)。我试图编辑答案,但不允许单字符编辑。
托里安

1
@toryan np。我已经编辑了答案。如果您认为我已经回答了您的问题,那么请投票/标记为答案。
金莎(Kin Shah)2015年

1
我重新运行了作业,这次仅产生了一个错误,该错误已记录在表中。不幸的是,查询文本仍然被截断-有什么方法可以获取更多信息?
toryan

我对此表示怀疑。如我的回答所述,您可以尝试使用输出文件方法1吗?
Kin Shah 2015年

1
@toryan我有同样的问题- 即使输出到表(上面的方法(b))并读取,日志记录仍然被截断sysjobstepslogs。这是大多数在线讨论此问题的建议。但是方法(一),输出到文件中,没有存在这个问题:文本文件显示我所有作业步骤记录,终于没有截断!(在我的情况下,我的工作步骤是DTEXEC运行SSIS包的命令。)唯一的缺点:除非追加到文件,否则只能看到最后一次运行。而不是追加,我选择在较早的运行中使用截断。
Doug_Ivison '16

2

您可以获得全文:

  1. 去工作
  2. 右键点击 select properties
  3. 上班
  4. 选择step并单击edit按钮
  5. 选择advanced。在这里您可以看到日志路径。

现在,它简单地遵循了道路。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.