繁体   English   中英

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

[英]Data integration between IBM AS400 to SQL Server database

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

该解决方案假定您熟悉SQL Server集成服务(SSIS):

连接到AS400

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

数据流源:

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

答案来自www.sqlservercentral.com/Forums

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

具有相同的数据库设计,我想知道为什么在SQL Server上需要一个副本。 我将直接访问IBM。 按照@Kamran Farzami的建议安装驱动程序并使用它们。 这样,在大型机上的写入和查询之间就不会有任何滞后。

如果您可以接受滞后并且您不能直接访问IBM i,那么我会看到三个主要选项:

  1. 使用OLE DB驱动程序从Windows系统中提取数据。 使用.NET驱动程序,您可以使用相对记录号(RRN)来记住停止同步的位置。
  2. 阅读日志文件,并通过在IBM i上创建Web服务使它们可用。
  3. 在计划的作业中读取日志文件,并将更改从日志推送到更新SQL Server的Web服务。

选项1仅在未重新组织您同步的文件时才有效。 RGZPFM命令更改记录号。 如果可以的话,您可以在SELECT语句中获得RRN: select *, RRN(MYTABLE) as RRNMYTABLE from MYTABLE

自V5R4起,Web服务服务器已包含在OS400中。 因此,您应该可以使用选项2。

我在SQL服务器位于互联网连接不可靠的远程(洪都拉斯)位置的情况下做了类似的操作。 这是一个简短的VB程序,使用OLE DB驱动程序,在与AS400相连的服务器上运行(如果连接断开,则“休眠”)。 该程序将在可用时更新/同步唯一键控的镜像文件。 另一个程序将单个交易记录上载到单独的表(文件)中。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM