我有以下问题。我有一个在其中一个步骤中执行SSIS目录包的作业。当其中一个步骤抛出错误时,我在另一个步骤中处理错误,在该步骤中我查询msdb.dbo.sysjobhistory
和列message
,其中包含步骤的错误。通常,所有其他步骤通过捕获错误并将RAISERROR
与需求指定的自定义消息一起使用来处理错误。
问题是当包失败时,即使我在其中捕获包错误并使用带有RAISERROR
语句的SQL任务,当我查询msdb.dbo.sysjobhistory
表时,我发现一个通用来自SSIS目录的消息说我应该查看项目的报告以获取更多详细信息(在那里,我找到了自定义消息)。
无论如何都要避免在作业的历史记录中显示该消息,而是让自定义消息显示在其他任何内容中?
答案 0 :(得分:1)
SQL作业启动SSIS包只会使用从作业定义屏幕转换的参数调用DTSExec。此存根错误消息是由DTExec生成的消息,您几乎没有机会更改它
您可以做些什么 - 对于SSIS包执行步骤解析此消息,解压缩Execution ID: <ExecID>
。然后使用此执行ID - 转到SSISDB.catalog.operation_messages,按operation_id = ExecID
过滤,然后使用message_type IN (120, 100)
查找行。 message
字段的内容包含您的错误消息或取消消息。