AS400 DB2国家字符转换为SQL Server链接服务器

时间:2014-07-30 08:29:39

标签: sql-server db2 linked-server db2-400

我有一个与IBM AS400 DB2数据库的SQL Server 2012企业版链接服务器连接。 我正在使用IBMDASQL提供程序进行连接。

我遇到一些匈牙利字符问题:在选择期间,字母Ő正在转换为O

在此示例中,name_converted列即可,Ő字母仍为Ő

名称列将转换为O

SELECT * FROM openquery (g,
   SELECT 
       cast(name as char(35) ccsid 870) as name_converted,
       name,
   FROM libr.mytable')

我的问题是:我可以创建链接服务器,以便所有角色都使用CCSID 870吗?

EXEC master.dbo.sp_addlinkedserver @server = N'G', @srvproduct = N'HUN00101', @provider  = N'IBMDASQL', @datasrc = N'HUN00101'

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'G', @useself=N'False', 
            @locallogin=NULL, @rmtuser=N'query', @rmtpassword='########' 
GO

EXEC master.dbo.sp_serveroption @server = N'G', @optname = N'collation compatible', 
                                @optvalue = N'false' 
GO
EXEC master.dbo.sp_serveroption @server=N'G', @optname=N'data access', @optvalue=N'true' GO
EXEC master.dbo.sp_serveroption @server=N'G', @optname=N'dist', @optvalue=N'false' GO
EXEC master.dbo.sp_serveroption @server=N'G', @optname=N'pub', @optvalue=N'false' GO
EXEC master.dbo.sp_serveroption @server=N'G', @optname=N'rpc', @optvalue=N'false' GO
EXEC master.dbo.sp_serveroption @server=N'G', @optname=N'rpc out', @optvalue=N'false' GO
EXEC master.dbo.sp_serveroption @server=N'G', @optname=N'sub', @optvalue=N'false' GO
EXEC master.dbo.sp_serveroption @server=N'G', @optname=N'connect timeout', @optvalue=N'0' GO
EXEC master.dbo.sp_serveroption @server=N'G', @optname=N'collation name', @optvalue=null GO
EXEC master.dbo.sp_serveroption @server=N'G', @optname=N'lazy schema validation', @optvalue=N'false' GO
EXEC master.dbo.sp_serveroption @server=N'G', @optname=N'query timeout', @optvalue=N'0' GO
EXEC master.dbo.sp_serveroption @server=N'G', @optname=N'use remote collation', @optvalue=N'true' GO
EXEC master.dbo.sp_serveroption @server=N'G', @optname=N'remote proc transaction promotion', @optvalue=N'true' GO

由于

1 个答案:

答案 0 :(得分:0)

在IBM i系统上,可能没有使用CCSID 870正确标记数据。你能尝试使用" Force Translate"自定义属性并将其设置为870? 注意:这将导致未正确标记CCSID的所有数据都被处理为CCSID 870.