【问题标题】:How to convert binary data by using linked server to DB2/AS400 in SQL Server 2012?如何在 SQL Server 2012 中使用链接服务器将二进制数据转换为 DB2/AS400?
【发布时间】:2015-11-24 15:33:26
【问题描述】:

我们有两台数据库服务器,它们都使用 SQL Server 2012,但操作系统不同。较旧的是使用 Windows Server 2008R2 Standard,而较新的是 Windows Server 2012R2 Standard,两者都是 x64。另一个区别是确切 SQL Server 的版本号,所以旧的是

  • Microsoft SQL Server Management Studio 11.0.3128.0
  • Microsoft 数据访问组件 (MDAC) 6.1.7601.17514
  • 操作系统 6.1.7601

虽然较新:

  • Microsoft SQL Server Management Studio 11.0.5343.0
  • Microsoft 数据访问组件 (MDAC) 6.3.9600.17415
  • 操作系统 6.3.9600

我已经创建了一个正常工作的链接服务器来从旧服务器上的 DB2/AS400 数据库中获取数据。我用Data Access Tool 4.0制作了一个连接字符串,得到如下:

Provider=DB2OLEDB;User ID=****;Initial Catalog=CAT;Network Transport Library=TCPIP;Host CCSID=37;PC Code Page=1252;Network Address=****;Network Port=446;Package Collection=DATA;Default Schema=DATA;Process Binary as Character=True;Units of Work=RUW;Default Qualifier=DATA;DBMS Platform=DB2/AS400;Use Early Metadata=False;Defer Prepare=False;DateTime As Char=False;Rowset Cache Size=0;Binary CodePage=0;Datetime As Date=False;AutoCommit=True;Database Name=TEST_DB;Authentication=Server;Decimal As Numeric=False;Derive Parameters=False;LoadBalancing=False;Persist Security Info=False;Cache Authentication=False;Connection Pooling=False;

现在我想在新的服务器上创建相同的链接服务器,但它无法将二进制数据转换为正确的。

例如旧服务器与新服务器的数据对比:

  1. "" === 0x404040
  2. M === 0xD4

新服务器上使用的连接字符串:

Provider=DB2OLEDB;User ID=****;Initial Catalog=CAT;Network Transport Library=TCPIP;Host CCSID=37;PC Code Page=1252;Network Address=****;Network Port=446;Package Collection=DATA;Default Schema=DATA;Process Binary as Character=True;Units of Work=RUW;Default Qualifier=DATA;DBMS Platform=DB2/AS400;Use Early Metadata=False;Defer Prepare=False;DateTime As Char=False;Rowset Cache Size=0;Binary CodePage=0;Datetime As Date=False;AutoCommit=True;Database Name=TEST_DB;Authentication=Server;Decimal As Numeric=False;Derive Parameters=False;LoadBalancing=False;Persist Security Info=False;Cache Authentication=False;Connection Pooling=False;

我已经试过了:

  • 使用 Data Access Tool 4.0,因为它在过去已经工作过(Process Binary as Character = True)
  • 使用 Data Access Tool 5.0 与 SQL Server 2012 更兼容(不包括 Process Binary 选项)
  • 已从 MS 支持 (https://support.microsoft.com/en-us/kb/2993741) 安装修补程序
  • 浏览了可能的设置并尝试了一些组合
  • 比较已经工作的链接服务器和新创建的链接服务器

请帮助我如何解决这个问题!

【问题讨论】:

  • 服务器运行的是什么版本的实际 SQL Server? (在每台服务器上使用SELECT @@VERSION 进行查找。Management Studio 的版本不相关;例如,您可以使用 SQL Server Management Studio 2014 连接到 SQL Server 2005。)
  • 旧版本:Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) Dec 28 2012 20:23:12 版权所有 (c) Microsoft Corporation Standard Edition (64-bit) o​​n Windows NT 6.1 (Build 7601: Service Pack 1) 新版本:Microsoft SQL Server 2012 - 11.0.5343.0 (X64) May 4 2015 19:11:32 版权所有 (c) Microsoft Corporation Standard Edition (64-bit) o​​n Windows NT 6.3 (Build 9600: ) (Hypervisor)

标签: sql-server database db2 oledb db2-400


【解决方案1】:

在系统上安装了i系列ODBC驱动并配置了系统DSN,应该连接到数据库。

https://social.msdn.microsoft.com/Forums/en-US/eae2d05f-32e8-4541-87fb-70fc12697d15/ms-ole-db-provider-for-db2-v5?forum=sqldataaccess

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多