【发布时间】: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