【问题标题】:SSIS package to automate the reprocessingSSIS 包以自动化重新处理
【发布时间】:2016-02-05 21:56:27
【问题描述】:

这是我遇到的一个非常独特的问题。让我先给你一些细节:

我们有父包(我们称之为 A)设计用于处理部分和全部处理的多维数据集。现在,这个包调用了另外两个包(比如 B、C),一个用于加载暂存数据,另一个用于处理多维数据集。

几周前,我们开始遇到连接问题,导致处理所有多维数据集失败。从那时起,这种情况每周发生一次或两次。显然 SQL 服务器无法建立连接(仅几秒钟)。但是这种连接丢失会使所有剩余的多维数据集处理失败。

现在解决此问题的唯一方法是重新启动父包。在重新启动整个包之前,我们运行一个脚本来更新已处理多维数据集的标志。这有助于我们跳过已经成功处理的多维数据集。

所以我一直在尝试设计这个子包(负责多维数据集处理),如果多维数据集失败,它会自动发送以进行重新处理。以下是我使用的逻辑:

在这我所做的是将这个进程立方体任务放在一个for循环容器中并将计数器设置为2。如果立方体失败计数小于2,它将尝试重新处理并且如果失败计数更大大于 2,它退出循环并且使该多维数据集的处理失败。通过将重试次数限制为 2,我们避免了在出现数据问题并且多维数据集每次都失败时可能发生的无限循环的风险。

但这并不能解决我的问题,因为多维数据集已经获取了一个线程,并且将重新处理同一个线程,而不是在一个新线程中。为了解决连接问题,它必须获得一个新线程。

现在来回答我的问题,

我如何设计这个包,如果多维数据集失败,它会触发在新线程中重新处理多维数据集,或者更好的是,停止包,在运行脚本后再次运行父包以更新标志和重新处理立方体。这甚至可能吗?还是有更好的方法来解决这个问题?

我以前从未遇到过这个问题,所以我对如何进行有点困惑。 因此,任何帮助将不胜感激。

【问题讨论】:

    标签: sql-server ssis ssas ssas-tabular


    【解决方案1】:

    我认为在包中添加一些检查点也会有所帮助。答案太详细了,但它可以让你从失败点重新开始,试试这个链接

    https://www.simple-talk.com/sql/sql-tools/implementing-checkpoints-in-an-ssis-package/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      相关资源
      最近更新 更多