sql-server - 在 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 数据类型读写阿拉伯文本
解决方案
有类似的问题。我的设置是使用 MS OLE ODBC 提供程序在 MSSQL 2012 集群和 Intersystems Cache 2009.x 之间建立链接服务器。
我的观察如下:
- 在具有 nvarchar 数据类型的列上转换/强制转换不起作用——因为它显示了 ???? (这是在 SSMS 上)
- 在使用Database.net和WinSQL等 3rd Party DB 管理工具时,我能够看到正确的字符。
- 使用 ODBC 驱动程序的Unicode SQL 类型函数只是间歇性地帮助显示正确的字符。
解决方案:
- 在 ODBC 驱动程序上启用Unicode SQL 类型功能
- 更改在 Intersystems Cache db 上执行的测试 sql 查询。如果您继续执行相同的查询,则输出会缓存一段时间(不确定到底有多长)。
就我而言,sql server 集群不在我的控制之下,我花了几天时间来玩弄不同的变体。
推荐阅读
- android - 如何在不同语言的给定文本文件中搜索字符串
- angular - 使用 Angular 4 在个人资料组件中上传新照片后,如何更新导航栏组件中的个人资料图片?
- angularjs - 无法在 AngularJs 中启用禁用 ng 的按钮
- javascript - Angular 5 - 取消选中所有复选框功能不影响视图
- appium - 无法启动 Andrioddriver
- mysql - 如何调试:子查询返回多于 1 行
- jsf - jsf-api.jar 和 jsf-impl.jar 的用途
- angular - 文本框只接受数字
- python - Pygame 适用于一个 PyCharm 项目,但不适用于任何其他项目
- python-3.x - 为什么空白输入打印在python中的if语句