【问题标题】:SSIS Data flow failing - calling a Sybase ASE stored procedure using temp tablesSSIS 数据流失败 - 使用临时表调用 Sybase ASE 存储过程
【发布时间】:2015-08-06 14:25:16
【问题描述】:

我一直在与一个 SSIS 任务 (2012) 作斗争,该任务有一系列数据流任务串联运行。

特别是,有一个数据流任务在数据源阶段失败。我正在使用 OLE DB 驱动程序调用 Sybase ASE (15) 存储过程。这个存储过程是通过“命令通过变量”调用来调用的。

发生的情况是存储过程在预执行阶段结束时失败,并显示“无法从数据源检索列信息”错误消息。

仅当我从已部署进程的 SQL 服务器 (2014) 运行此程序时才会发生故障。它似乎在我的开发环境(Visual Studio 2012)中运行良好。

我目前唯一的线索指向 ASE Stored Proc。我已经注释掉了一大堆更新和其他 proc 内部临时表填充,并且一切正常。我开始随机添加它们,但过程失败 - 似乎没有押韵或理由.....

以前有人遇到过这个问题吗?我可以设置 SSIS、SQL Server 或 ASE 上的任何设置以提供帮助吗?

谢谢

【问题讨论】:

  • 不确定为什么它在 2012 年和 2014 年之间的行为会有所不同,但我猜 ASE 驱动程序在两次安装之间有所不同?也就是说,一般方法是将“假”结果集作为存储过程中的第一条语句。 IF (NULL = NULL) BEGIN SELECT 1 as Col1, 'A' AS Col2 END 这允许 SSIS 验证元数据,即使该语句永远无法在逻辑上执行。 SSIS 标记中有此问题的重复项,只是还没有循环查找它
  • 谢谢 - 是的,我已经看到了这个技巧。试图避免它,但我会试一试。
  • 另一件事 - 我认为这仅在验证阶段有效?还是在预执行阶段也会有所作为?
  • 好的,越来越近了。我尝试了伪造的结果集,但没有奏效。不过,我观察到失败发生在标称 35 秒的合理一致的时间范围之后。这似乎指向源连接的 CommandTimeout 自定义选项,我将其保留为 0(无限)。我现在将它设置为 60 秒,但它仍然在 35 秒时失败。我还将连接超时更改为 120 秒,没有任何变化。因此,现在这往往会指向 SQL 代理级别某处的某个超时值。我会继续挖掘。
  • 一切正常 - 我的开发环境和我部署到的服务器之间的 ASE 驱动程序不兼容造成了严重破坏......一旦所有驱动程序都排好,一切都解决了

标签: stored-procedures ssis oledb sap-ase ssis-2012


【解决方案1】:

根据我上面的评论,问题归结为我的开发环境与我将 SSIS 项目部署到的 SQL 服务器之间的驱动程序不兼容。

简而言之,我的开发环境使用的是 ASE 15.7.0.1260 驱动程序套件。我部署到的 SQL 服务器安装了 ASE 15.7.0.501 驱动程序套件。

一旦 SQL 服务器更新了它的驱动程序,一切都开始正常工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多