Error handling SSIS错误处理被Web服务任务绕过

Error handling SSIS错误处理被Web服务任务绕过,error-handling,ssis,Error Handling,Ssis,我有一个在队列表中循环的包。对于要完成的每一行,它都会尝试下载数据。这是使用循环容器实现的。循环之外还有其他可执行文件-日志记录、连接到远程服务等 我在错误处理方面有困难。我希望发生的是: 循环容器中的任何错误都应该更新队列表,例如“不,无法下载此表”(还有一些其他错误日志记录,但详细信息并不重要)。然后继续循环中的下一个项目(或继续,如果循环结束) 循环容器之外的任何错误都应立即使包失败,并记录整个包失败 循环容器中的任何错误都不应使包失败,也不应记录整个包失败 我已经用两个OnError事件

我有一个在队列表中循环的包。对于要完成的每一行,它都会尝试下载数据。这是使用循环容器实现的。循环之外还有其他可执行文件-日志记录、连接到远程服务等

我在错误处理方面有困难。我希望发生的是:

  • 循环容器中的任何错误都应该更新队列表,例如“不,无法下载此表”(还有一些其他错误日志记录,但详细信息并不重要)。然后继续循环中的下一个项目(或继续,如果循环结束)
  • 循环容器之外的任何错误都应立即使包失败,并记录整个包失败
  • 循环容器中的任何错误都不应使包失败,也不应记录整个包失败
  • 我已经用两个OnError事件处理程序实现了这一点:一个用于循环容器,Propagate设置为False;还有一个包裹。因此,包事件处理程序只应在循环容器之外的错误时触发。循环容器的MaximumErrorCount设置为0(从不因错误而失败)

    当我在循环中的ExecuteSQL任务中引入一个人为错误时,这是非常有效的。循环容器的处理程序触发,但包的处理程序不触发

    但是循环中有一个Web服务任务。当遇到错误时,SSIS会非常奇怪地处理它:

  • 首先,启动包OnError处理程序
  • 然后循环容器的处理程序启动
  • Web服务任务有什么奇怪的地方吗?或者是它抛出的错误:

    An error occurred with the following error message: "Microsoft.SqlServer.Dts.Runtime.DtsRuntimeException: The type of the value (Empty) being assigned to variable "User::WSResponse" differs from the current variable type (String).
    
    与ExecuteSQL任务抛出的“味道”或“严重性”不同:

    Executing the query "SELECT CONVERT(int,'This is not convertible to int')" failed with the following error: "Conversion failed when converting the varchar value...
    
    ?

    我试图使ExecSQL任务的错误更加“严重”——类型不匹配。选择一个varchar值,并在SSIS结果集中将该值分配给INT32变量。错误处理程序完美地处理了此错误:

    An error occurred while assigning a value to variable "AnIntVariable": "Input string was not in a correct format.".  
    
    WST错误是否是一个“…DTSRunTimeException”使其绕过错误处理并直接进入包级别