【发布时间】:2017-11-12 06:11:45
【问题描述】:
场景 该场景是连接到多个 POS 终端并获取数据并保存到暂存 Db 中的表中。例如,有 10 个 POS 终端,每个终端有不同的 IP 和数据库名称。但是执行选择查询的表是相同的。在 SSIS 包中,foreach 循环从源表中选择 IP 和 DB 名称,连接到 POS DB 并保存到暂存表(比如 Destination_table)。由于使用了 foreach 循环,因此连接字符串是使用 SSIS 变量开发的。包被成功执行。
有时,POS db 可能不在线或由于网络问题,连接字符串会在 for 循环中间失败,从而导致 SSIS 包失败。为了克服这个问题,for each 循环属性ForceExecutionResult 设置为“成功”。此后,在执行 SSIS 包时,它会覆盖任何连接问题并简单地继续包中的下一个任务并完成执行。
问题
在 SQL 代理作业中部署包时,它会失败。从错误日志中可以看出,失败的原因是OLEDB连接错误。这意味着,与 SSIS 手动执行不同,SQL 作业不会覆盖 ForceExecutionResult 属性设置。
问题 是否有任何解决方法可以覆盖 SQL 中的此类连接问题并继续执行任务? 我们可以使用事件处理程序来做到这一点吗?或者是否有任何简单的属性设置可以完成这项工作?
【问题讨论】:
标签: sql-server ssis etl sql-agent-job sql-agent