You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

当某OLE DB源离线时,如何让SSIS包继续执行?

解决SSIS包因单个OLE DB源离线导致整体终止的问题

方法1:拆分数据流并配置失败行为

  • 将每个OLE DB源的处理逻辑拆分为独立的数据流任务,隔离单个源的故障影响范围。
  • 选中目标数据流任务,在属性窗口修改FailPackageOnFailure和FailParentOnFailure为False。这样即使某一数据流因源离线失败,包仍会继续执行其他正常任务。

方法2:启用延迟验证跳过预运行验证

  • 连接管理器层面:选中离线对应的OLE DB连接管理器,设置DelayValidation为True。
  • 数据流组件层面:选中该连接对应的OLE DB源组件,同样将DelayValidation设为True。
  • 延迟验证会把连接和组件的验证推迟到运行阶段,避免包启动时因验证失败直接终止。

方法3:脚本任务预检测连接可用性

  • 在数据流任务前添加脚本任务,编写代码测试每个OLE DB连接的有效性:
using System.Data.OleDb;

public void Main()
{
    bool connValid = true;
    string connStr = Dts.Connections["ea.prenlyn.net.ROWriter.RowReadOnly3P"].ConnectionString;
    
    try
    {
        using (OleDbConnection conn = new OleDbConnection(connStr))
        {
            conn.Open();
        }
    }
    catch
    {
        connValid = false;
    }
    
    Dts.Variables["IsEAConnValid"].Value = connValid;
    Dts.TaskResult = (int)ScriptResults.Success;
}
  • 给对应数据流任务添加优先约束,设置为仅当变量IsEAConnValid为True时执行;若连接无效则跳过该数据流,继续执行其他任务。

方法4:动态启用/禁用组件(进阶)

  • 创建包级变量标记各数据源的启用状态,结合预检测结果,通过表达式或脚本设置OLE DB源组件的Disabled属性,动态控制是否加载该组件。

内容的提问来源于stack exchange,提问作者Ramon Hernandez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 16:13:36