从 Sql Server 2008 R2 连接到 IBM i 服务器

11

我有一个大问题:我需要连接(仅需读取数据,不需写入)到我的客户的IBM AS/400服务器(也被称为iSeries,现在是IBM i)...

我认为我已经拥有所有必要的参数(由AS/400程序员提供),但我无法确定我应该使用哪个驱动程序,以及是否拥有所有必需的软件来实现此目的!

我已安装了IBM AS/400 ClientAccess 5.8驱动程序(带有最新操作系统的补丁),现在正在尝试在我的Sql Server 2008 R2(x64)服务器上配置一个新的Linked Server

第一个问题:我应该使用哪个驱动程序?

我有很多选择(但可能没有一个可用!!):

IBM DB2 UDB for iSeries IBMDASQL OLE DB Provider
IBM DB2 UDB for iSeries IBMDA400 OLE DB Provider
IBM DB2 UDB for iSeries IBMDARLA OLE DB Provider

...或者是其他通用的OLEDB/ODBC驱动程序?!

第二个问题:我应该将参数放在哪里(我指的是哪些字段!)

无论如何,如果我为我的Linked Server选择提供程序,显然我必须设置我的参数...但是我只有这个:

  • ADMIN用户的用户名
  • ADMIN用户的密码
  • AS/400服务器IP地址
  • “主”档案的名称,其中存储了我的数据(类似于ACG_DATV2

第三个问题:我应该如何编写我的查询?如何引用AS/400“档案”和表格?

我不知道如何构建我的读取查询:表格和视图(?!)存储在哪里,我如何引用它们?

预先感谢您!

1个回答

15

我认为有很多方法可以实现你想要的,但是针对你的情况,我会尝试解释一下我会怎么做。

使用那个版本的IBM ClientAccess(以及补丁),如果你使用正确的数据提供程序,我应该不会在连接到Sql Server 2008 R2链接服务器方面遇到麻烦。

首先,尝试按照以下方式配置您的链接服务器:

  • 链接服务器名称:自定义名称即可(例如:MYAS400
  • 提供程序:IBM DB2 UDB for iSeries IBMDASQL OLE DB Provider
  • 产品名称:不重要,类似于iSeries Access OLEDB Driver
  • 数据源:AS/400服务器IP地址(例如:192.168.0.1

无论您是使用向导还是SQL代码配置链接服务器,第一次访问AS/400服务器数据时,都会要求输入凭据,显示典型的iSeries窗口(请参阅我的示例)。

设置您的用户名(用户ID)和相应的密码,不用担心字符串的大小写!!

enter image description here

作为一般提示(但这仅与我的经验相关!),尽量避免使用特殊字符和区分大小写...

如果您到达这里(链接服务器创建没有问题),那么链接服务器应该可以工作(因此解决了第一个和第二个问题):让我们构建第一个查询!

一旦链接服务器创建完成,您所需的就是正确引用存档、库以及当然是正确的表和链接服务器(按名称):有了这些信息,就可以像这样构建查询(这是常规的T-SQL语法):

SELECT
    (Field1)
    , (Field2)
    , *
FROM (Linked Server Name).(Catalog Name).(Library).(TableName)

你可能缺少的唯一信息是“archive”:你可以在新的链接服务器中浏览目录树轻松找到它,或者只需使用iSeries Access Navigator工具!

因此,在您的情况下,我认为查询应该是(或多或少):

SELECT
    FILIO
    , DTVLD
    , DTVLA
    , SEQZA
    , CFIMP
    , PADRE
    , TPVLD
    , CMVLD
    , *
FROM MYAS400.S242DA0A.ACG_DATV2.ANLE200F

请注意,S242DA0A 只在我的情况下有效...

同时要记住:

  • AS/400 可能会频繁地要求输入凭据,即使您关闭并重新打开 SSMS。
  • 性能?...最好谈论其他事情 :) ...从 Sql Server 表中提取表格,并从那里查询它们!使用简单的: SELECT (Fields) INTO myTable FROM (AS/400 table)
  • 我尝试过这个过程很多次,没有太多麻烦(一旦我变得熟练了!)...但只是读取数据(就像你要求的一样)!从未尝试过更新数据!!!

祝你好运!


你认为在Windows 7 x64上也没问题吗?我以为会有很多麻烦...但还是尝试了这个解决方案! :) - user1616663
1
你说你有一个修补过的 iSeries ClientAccess 版本(5.8):我想你指的是服务包(版本应该是 4.0.100.1124 - V5R4M0):据我所知,这个版本也可以纠正最近操作系统上的问题! - MAXE
2
最新的操作系统是IBM i 7.1。IBM i Access 的当前版本是7.1,支持旧版本的操作系统。在此处检查操作系统版本支持情况 here。最好获取支持服务器操作系统版本的最新版本。因此,如果操作系统是v5r4,则使用7.1。如果操作系统是v5r3,则使用6.1。安装任何版本时,请始终确保安装服务包。 - WarrenT
如果您使用向导连接AS400 DB2,但向导没有提示任何凭据,您可以转到安全选项卡(左侧),选择“使用此安全上下文进行连接”,并在那里填写您的用户名和密码。 - Daniel Robertus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接