【问题标题】:How to force a database connection to fail in the middle of a dataflow task如何在数据流任务中强制数据库连接失败
【发布时间】:2012-11-08 10:02:15
【问题描述】:

一个序列容器中有四个数据流任务同时运行,连接到同一个 Oracle 数据库。就是没有一条小绿线连接四个数据流任务,强制它们按顺序执行。

在执行四个数据流任务时,与 Oracle 的 obdc 连接很少发生。

一个或多个数据流无法完成。请注意通常的 OnError 处理程序从未被命中。

我可以处理这种情况并优雅地失败。

但是我该如何测试呢?

软件包在服务器上安装和执行。我希望能够在程序包运行并从 Oracle 数据库中提取数据时强制终止 odbc 连接。

我无法像在 Sql Server Management Studio 中那样以类似的方式访问 Oracle 来终止适当的进程。

我能想到的最接近的做法是调整在 Sql Server 数据库中设置为包配置的连接字符串,使其无法连接到随机的虚拟服务器名称。不完全一样,但至少数据流会失败。它不会因为我正在寻找的确切原因而失败。

【问题讨论】:

    标签: ssis


    【解决方案1】:

    我不会尝试强行杀死事物,而是使用 SSiS 事务,因此如果失败,一切都会回滚。为此,请执行以下操作:

    1. 确保 MSDTC 正在运行
    2. 设置 TransactionOption = 在包级别支持
    3. 在序列容器级别设置 TransactionOption = 必需
    4. 设置 TransactionOption = 在数据流任务上受支持

    现在,它们应该全部成功或全部回滚。

    【讨论】:

    • 我更希望测试该进程是否可以处理突然丢失的连接。据称我已经可以处理故障,但我想确认它确实处理了错误。
    • @BlackMael 在这种情况下,将数据流任务之一设置为 ForceExecutionResult = Failure。同样,这不会强行终止连接,但任务会向 SSIS 报告它失败,即使它应该成功
    猜你喜欢
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2023-03-02
    • 2020-05-05
    • 2011-12-05
    相关资源
    最近更新 更多