SSIS失败后如何继续


12

我想要实现以下内容: 在此处输入图片说明

在此程序包中,我想遍历数据库名称列表,以动态修改连接管理器设置。

但是,“测试连接”上的第一个失败将暂停并导致程序包执行失败。

但是我想继续我的Foreach循环。我感觉这应该可行(否则这些红色故障箭头的用例是什么?)

我尝试过的事情包括弄乱“ MaximumErrorCount”。

Answers:


12

要回答我所问的问题,可以通过确保任务及其父容器的MaximumErrorCount为零来在失败后继续进行操作。在这种情况下,这意味着“测试连接”任务即“ foreach”容器和包装本身。

我最终做了一些不同的事情。杰米·汤姆森(Jamie Thomson)的“ 使用前验证连接”在这里很有用。这是我所做的:

我用脚本任务替换了“测试连接”任务。脚本任务几乎和杰米的脚本完全一样,除了我

  • 只使用了一个连接管理器,而不是全部,
  • 任务结果总是成功
  • 然后将新变量“ User :: ConnectionSucceeded”设置为连接测试的结果。

我还更改了从测试连接任务出来的箭头来评估表达式,它们评估:

  • @ [User :: ConnectionSucceed] ==真
  • @ [User :: ConnectionSucceed] == False

分别。

我还必须记得编辑进入“ Update LastMonitored”任务的多个约束。我将它们更改为使用逻辑“或”。

这是我的SSIS包现在的样子: 新包装


1

简单的方法...

在“测试连接”任务之后,双击优先约束(绿线)。您应该看到“约束选项”,单击下拉列表“值”,然后选择“完成”。这告诉您程序包在任务完成后继续运行,无论它是否失败。

注意:除非要在任务完成后添加要评估的表达式,否则请勿从“约束”更改下拉列表“评估操作”。还要将约束保持在“逻辑与”。

希望这可以帮助。

使用优先约束


优先约束被故意设置为“成功”。此外,将其更改为“完成”并不能解决我提出的问题或我正在努力解决的任务。如果“测试连接”失败,这仍将暂停程序包的执行。
Michael J Swart

阅读了如此多的页面,终于找到了这个答案!谢谢!
alexkovelsky '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.