IBM AS400与SQL Server数据库之间的数据集成

时间:2016-02-23 15:30:28

标签: sql sql-server db2 ibm-midrange data-integration

我是一名Web开发人员,其任务是创建某种将数据从IBM AS400移动到SQL服务器的机制。遗憾的是,在这种情况下,链接服务器是不可能的,因为SQL Server只是标准版(此版本中不提供db2提供程序),AS400服务器位于单独的服务器上。我研究过在AS400表上添加某种触发器,它调用一个将数据插入SQL服务器的Web服务,但这似乎不是最好的方法。有没有人对AS400提交到AS400的数据从AS400到SQL Server的过程有任何建议?

3 个答案:

答案 0 :(得分:1)

此解决方案假定您熟悉SQL Server Integration Services(SSIS):

与AS400的连接

  1. 创建新的ADO.Net连接管理器
  2. 将提供商设置为.Net提供商 - > ODBC数据提供程序
  3. 创建DSN(控制面板 - >管理工具 - >数据源ODBC - >系统DSN)
  4. 在数据源规范的连接管理器中,选择已创建的DSN。提供登录信息。
  5. 测试连接。
  6. 数据流源:

    1. 使用DataReader源
    2. 在高级编辑器中,选择刚刚创建的Ado.Net连接管理器。
    3. 在“组件属性”选项卡中 - >自定义属性,在SQLCommand中指定所需的查询字符串(select * from DatabaseName.TableName)
    4. 检查列映射的准确性
    5. 转到输入和输出属性 - >数据读取器输出 - >外部列(选择表中varchar类型的列,它们现在将是数据类型UnicodeString(DT_WSTR)。这是因为默认情况下,DataReader将字符串作为unicode字符串读取。这意味着在SQL的目标表中,这些列必须是unicode类型,即NVARCHAR而不是VARCHAR)
    6. 来自www.sqlservercentral.com/Forums

      的答案

答案 1 :(得分:1)

我将我的Web应用程序与IBM i同步。但我有自己的数据库设计,并在Windows端编写了一个同步程序。

使用相同的数据库设计我想知道为什么我需要SQL服务器上的副本。我会直接访问IBM。安装驱动程序@Kamran Farzami建议并使用它们。这样,大型机上的写入与您的查询之间就不会有任何延迟。

如果您可以接受延迟,并且无法直接访问IBM i,我会看到三个主要选项:

  1. 使用OLE DB驱动程序从Windows系统中提取数据。使用.NET驱动程序,您可以使用相对记录号(RRN)来记住停止同步的位置。
  2. Read the journal files并通过creating a webservice on the IBM i提供。
  3. 读取预定作业中的日志文件,并将更改从日志推送到更新SQL Server的Web服务。
  4. 选项1仅在您重新同步的文件未重组时才有效。 RGZPFM命令更改记录号。如果可以,您可以在SELECT语句中获取RRN:select *, RRN(MYTABLE) as RRNMYTABLE from MYTABLE

    自V5R4起,Web服务服务器包含在OS400中。所以你应该能够使用选项2。

答案 2 :(得分:1)

我已经做了类似的事情,其中​​SQL服务器位于远程(洪都拉斯)的互联网连接不可靠的位置。这是一个简短的VB程序,使用OLE DB驱动程序,在可用时连接到AS400的服务器上运行(或者#34;睡眠"当连接断开时)。可用时,程序将更新/同步唯一键控镜像文件。另一个程序将单个事务记录上载到单独的表(文件)。

我们还定期从AS400更新SQL Server主表(即项目主表)。这也利用了在服务器上启动的VB程序(可以是使用驱动程序的任何语言)。我相信它并不是非常优雅,但比AS / 400触发Web服务更实用。