微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Web服务任务绕过的SSIS错误处理

如何解决Web服务任务绕过的SSIS错误处理

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

我在错误处理方面遇到麻烦。我想发生的是:

  1. 循环容器中的任何错误都应更新队列表,说“不,不能下载该表”(还有其他一些错误日志记录,但细节并不重要)。然后继续循环中的下一个项目(如果循环结束,则继续进行);
  2. 循环容器之外的任何错误都应立即使软件包失败,并记录整个软件包的失败;
  3. 循环容器中的任何错误都不应使程序包失败,也不应记录整个程序包失败。

我已经用两个OnError事件处理程序实现了这一点:一个用于循环容器,Propagate设置为False;另一个用于循环容器。一个用于包装。因此,包事件处理程序应仅针对循环容器外部错误触发。循环容器的MaximumErrorCount设置为0(永远不会因为错误而失败)。

当我在循环中的Executesql任务中引入人为错误时,此方法非常有效。循环容器的处理程序触发,但包的触发。

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

  1. 首先,软件包OnError处理程序触发
  2. 然后触发循环容器的处理程序

关于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 ResultSet中将此值分配给INT32变量。错误处理程序可以完美地处理此错误

An error occurred while assigning a value to variable "AnIntvariable": "Input string was not in a correct format.".  

WST错误是“ ... DTSRunTimeException”,使它绕过错误处理并直接进入程序包级别吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。