【问题标题】:SQL Server Agent Job intermittently running for packages on SSISDBSQL Server 代理作业间歇性地为 SSISDB 上的包运行
【发布时间】:2013-11-27 07:21:57
【问题描述】:

我创建了一个 SSIS 包以从 OLAP Cube 中提取数据并使用 SSIS 2012 将其推送到 SQL Server。我在 SQL Server SSIS DB 上部署了相同的包,并创建了一个 SQL Server 代理作业来运行该包。我有一个配置为运行作业的帐户(不是通过在作业中创建代理,而是 SQL Server 代理在该帐户下运行),它可以访问 OLAP 多维数据集。这项工作有时会运行,有时会失败。

为什么工作表现怪异?在这个问题上的任何帮助都会对我有很大帮助。

我正在使用 SQL Server 2012 SP1 企业版 (11.0.3000.0)(如果有帮助的话)。失败时弹出的错误信息是:

OLE DB 源在预执行阶段失败并返回错误代码 0xC0202009

SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E05。 OLE DB 记录可用。来源:“”Microsoft OLE DB Provider for SQL Server 2012 Analysis Services。“”Hresult:0x00000001 描述:“”错误代码 = 0x80040E05,外部代码 = 0x00000000:。“”。 "

【问题讨论】:

    标签: sql-server ssis


    【解决方案1】:

    我在 SQL2008 和现在在 SQL2012 SSIS 上都遇到过同样的错误,但已经能够消除/解决方法。

    我们的控制流中有一个循环容器,它包含一个带有 MDX 源的数据流任务。数据流源的 MDX 查询是在 Loop 容器的每次迭代上动态构建的(通过表达式)(但是它总是返回“相同形状”的结果 - 只有 WHERE 子句中的过滤器不同)。

    我们发现该错误有些间歇性 - 有时包会成功完成,有时会在容器循环的不同迭代中失败并出现 0x80040E05 错误。

    为了缓解这个问题,我们为此包设置了 SQL 代理作业步骤,最多可重试失败 5 次 - 这不是理想的解决方法,但它有助于提高作业的成功率。

    我们不知道为什么会发生此错误或导致此错误的原因,但它似乎在某种程度上与时间相关,并且我仅在将 SSAS OLE-DB 数据源与动态生成的 MDX 一起使用时才看到此问题询问。我已经设法通过 SSIS 包中不理想的解决方法几乎消除了错误 - 不知道为什么这会起作用/有帮助(希望微软能够解决它并解决问题,因为它自 SQL2008 以来一直困扰着我们并且是在 SQL2012 SP1 中仍然在这里...

    MDX 导致 0x80040E05 错误的解决方法:

    在我们的循环容器中,我们向包含动态生成的 MDX 源查询的数据流任务添加了一个带有 OnSuccess 优先约束的脚本任务。脚本任务只是在数据流任务完成约 5 秒后立即在处理中引入等待,然后允许 SSIS 继续下一次迭代(例如 System.Threading.Thread.Sleep(5000))。

    由于这种延迟,我们的 SSIS 包执行更加稳定 - 不知道为什么,但这是我们观察到的。另请注意,当我们迁移到 SQL2012 SSIS 包时,返回 0x80040E05 错误,但是我们能够通过在此脚本任务上将 WAIT 时间增加到 10 秒来再次消除它。

    现在等待 10 秒不是解决此问题的理想解决方案/解决方法 - 特别是当它包含在循环容器中时(在我们的例子中,它在包执行持续时间中增加了近 30 分钟的“等待时间”),但是,这种解决方法比让包失败 80% 以上的时间要好

    【讨论】:

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