首页 > 解决方案 > 在 SSMS 上,ODBC 链接服务器查询显示 unicode 文本数据

问题描述

在 SSMS 中,我使用ODBC 驱动程序链接服务器连接到 Intersystems Cache 数据库当我使用 SQL 查询获取数据时,例如

SELECT Text FROM OPENQUERY([ODBC_CACHE_DB],'SELECT TOP 100 Text FROM cls.Actions')

在 SSMS 中,它给出了结果,但它给出了?对于阿拉伯字符,如

“18:29:00 [Mohamad] ????? ??? ?? ??? ??? ?????? ????? ? 18:30:30 [客户] Hi Sirius is jai”

怎么可能得到阿拉伯文本?

注意:我可以使用 nvarchar 数据类型读写阿拉伯文本

标签: sql-serverodbclinked-serverunicode-stringintersystems-cache

解决方案


有类似的问题。我的设置是使用 MS OLE ODBC 提供程序在 MSSQL 2012 集群和 Intersystems Cache 2009.x 之间建立链接服务器。

我的观察如下:

  • 在具有 nvarchar 数据类型的列上转换/强制转换不起作用——因为它显示了 ???? (这是在 SSMS 上)
  • 在使用Database.netWinSQL等 3rd Party DB 管理工具时,我能够看到正确的字符。
  • 使用 ODBC 驱动程序的Unicode SQL 类型函数只是间歇性地帮助显示正确的字符。

解决方案:

  • 在 ODBC 驱动程序上启用Unicode SQL 类型功能
  • 更改在 Intersystems Cache db 上执行的测试 sql 查询。如果您继续执行相同的查询,则输出会缓存一段时间(不确定到底有多长)。

就我而言,sql server 集群不在我的控制之下,我花了几天时间来玩弄不同的变体。


推荐阅读