在 SSMS 上,ODBC 链接服务器查询显示 unicode 文本数据

On SSMS, ODBC linked server queries show unicode text data

在 SSMS 中,我使用 ODBC 驱动程序 链接服务器 连接到系统间缓存数据库 当我使用 SQL 类似

的查询

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

在 SSMS 中它给出了结果但是它给出了?对于像

这样的阿拉伯字符

"18:29:00 [穆罕默德] ?????? ??? ?? ??? ??? ?????? ?????? 18:30:30 [客户] 嗨 Sirius 是 jai"

如何获得阿拉伯语文本?

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

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

我的观察如下:

  • Convert/Cast 在数据类型为 nvarchar 的列上不起作用——因为它显示了 ???? (这是在 SSMS 上)
  • 当使用 Database.net and WinSQL 等第 3 方数据库管理工具时,我能够看到正确的字符。
  • 尝试使用 ODBC 驱动程序的 Unicode SQL Types 功能只能间歇性地帮助显示正确的字符。

解决方法:

  • 在 ODBC 驱动程序上启用 Unicode SQL Types 功能
  • 更改正在 Intersystems Cache 数据库上执行的测试 sql 查询。如果您继续执行相同的查询,输出会被缓存一段时间(不确定具体多长时间)。

就我而言,sql 服务器集群不在我的控制之下,我花了几天时间来尝试不同的变体。