AS400 DB2国民字符转化为SQL Server链接服务器



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

我有一些匈牙利字符的问题:在选择过程中,字母Ő转换为O

在本例中,name_converted列将是OK的,Ő字母仍然是Ő

name列将被转换为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

谢谢

看起来数据可能没有在IBM i系统上正确地使用CCSID 870进行标记。你可以尝试使用"强制翻译"自定义属性并将其设置为870吗?注意:这将导致所有没有正确标记CCSID的数据被处理为CCSID 870。

最新更新