11

我有一个大问题:我必须连接(我只想读取数据,而不是写入)我客户的 IBM AS/400(又名 iSeries,现在是 IBM i)服务器......

我想我有所有需要的参数(由 AS/400 程序员给我),但我不知道我必须使用哪个驱动程序,以及我是否有所有需要的软件!

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

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

我有很多选择(但也许这些都不起作用!!):

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“档案”和表格?

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

先感谢您!

4

1 回答 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)和相关密码,不考虑字符串的大小写!!

在此处输入图像描述

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

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

创建链接服务器后,您只需正确引用存档、库,当然还有正确的表和链接服务器(按名称):使用这些信息,构建这样的查询(通常T-SQL 语法):

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

您可能缺少的唯一信息是“存档”:您可以通过浏览新链接服务器中的目录树轻松找到它,或者只使用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)
  • 我已经尝试过这个过程很多次,我没有遇到很多麻烦(一旦我熟练了!)......但只是为了读取数据(如你所问)!从来没有尝试过更新数据!!!

祝你好运!

于 2012-08-27T08:01:19.967 回答