我创建了一个 SQLAgent 作业,其中一个作业步骤执行了一个不受我直接控制的过程。该过程中有打印语句,当它被执行时,所有这些打印语句的输出显示在作业历史记录->日志文件摘要->行详细信息窗格下作为消息。这本身不是问题,但这些消息掩盖了有时会发生的错误。如何配置 SQLAgent(或作业步骤)以使其忽略这些(信息性)消息并仅显示错误消息。重现步骤:创建一个包含以下语句的作业步骤:打印“hello world”并执行该作业步骤。历史记录显示作为用户执行的消息:NT SERVICE\SQLAgent$MSSQLSERVER2019。你好世界 [SQLSTATE 01000](消息 0)。步骤成功。现在,如果它们是 SQL 语句中的一系列打印语句,其执行结果导致被零除错误,它将显示为消息,但它会被所有这些打印语句输出所掩盖。但是如果可以抑制这些信息性消息,则错误消息将很容易看到。
不幸的是,我不相信这是可能的。这些不是特定类别的消息,而是它们只是已执行过程的输出。
相反,为了提高错误的可追溯性,您可以将完整的输出/消息捕获到一个不受字符长度限制的单独源,这样它就不会被截断。
Kin Shah 的相关信息供历史参考:
这样做是将完整的消息记录到另一个地方,而不是
msdb.dbo.sysjobhistory
有字符限制的默认表。根据 Kin 的上述回答获得更多信息。