sql-server - SSIS DB2 到 SQL Server 2017
问题描述
我正在尝试在我们的 SQL Server 2017 实例和 ISeries AS400 (IBM) 数据库之间建立连接以进行数据集成。
当我在数据流任务中使用 OLE DB 源时,连接成功,但执行速度很慢。管理 AS400 的团队告诉我们,使用 JDBC 或 ODBC 提供程序,我们在读取数据时应该有更好的性能。
我确实在 VSDT 连接管理器中设置了到 AS400 的 ODBC 连接,将其附加到 ODBC 源组件,如果我在数据源任务配置上按“预览”,我看到连接正确打开并显示数据。
但是,如果我运行整个任务,它总是会失败,说明:
“[ODBC 源 [11]] 错误:对连接管理器 AS400iseries 的 AcquireConnection 方法调用失败,错误代码为 0xC0014009。在此之前可能会发布错误消息,其中包含有关 AcquireConnection 方法调用失败原因的更多信息。”
我究竟做错了什么?预览不是验证连接是否有效的充分方法吗?
PS 数据流任务只是将数据一对一复制到 SQL Server 中,并添加了一个固定值列。该任务使用 OLE DB 驱动程序和数据源完美运行。
编辑:已经尝试强制 32 位调试配置,但没有任何改变。
我正在使用 iSeries Access ODBC 驱动程序 32 位(v13.00.01.00),也尝试使用 64 但没有结果
解决方案
目前,运行也在运行。对我来说,解决方法是为同一个 AS400 服务器创建两个 ODBC 数据源注册,但一个使用 32 位工具制作,另一个使用 64 位制作。一样的名字。所以,现在,预览使用 32 位驱动程序执行(因为 VSDT 是一个 32 位软件),例如,当我在作业中运行它时,SSIS 以相同的数据源为目标,但是64 位版本。我知道这可能是一种解决方法,但对我来说它有效。
推荐阅读
- sql-server - SQL Server 2008 - 添加了一列,现在缺少一堆磁盘存储
- reporting-services - SSRS 中的 IIF 条件和处理零
- vue.js - 无法读取未定义 APOLLO GRAPHQL 的“then”属性
- winforms - 在datagridview(winform)中连接2列的值
- javascript - 为什么 iife chage 中“X”的值取决于我们访问它的方式?
- r - Sparklyr/Dplyr - 如何为 sparkdata 帧的每一行应用用户定义的函数并创建将每一行的输出写入新列?
- c - 如何将 scanf 的输入限制为整数和浮点数(一般为数字)
- android - 非静态类不能有静态变量
- shell - shell修改中的内存设备输出
- laravel - 在 Laravel 中使用 DB :: select 和其他工具是否安全?