【问题标题】:Using freetds and unixODBC to run queries with accents (á,é,í,ó,ú) on SQL Server使用 freetds 和 unixODBC 在 SQL Server 上运行带有重音符号 (á,é,í,ó,ú) 的查询
【发布时间】:2016-12-29 15:47:23
【问题描述】:

我正在使用带有 freetdsunixODBCUbuntu 14.04 连接到 2008 Microsoft SQL Server。我用tsqlisql 测试了连接,它工作正常。在使用isql -v 时,如果我在查询中包含重音符号 (á,é,í,ó,ú),我会收到以下响应:

[37000][unixODBC][FreeTDS][SQL Server]'?' 附近的语法不正确。

[ISQL]错误:无法执行 SQL

在安装 freetds 和 unixODBC 包时,我收到一条警告消息,说除非有额外的包,否则不会接受特殊字符,但我不知道是哪个包。为了尝试解决这个问题,我卸载了 freetds 和 unixODBC,重新安装了它们,但没有收到任何警告消息,但在查询中包含重音符号时,我仍然收到相同的错误消息。

PS:如果这个问题含糊不清或不完整,我很抱歉。

【问题讨论】:

  • 你在这里关心什么......
  • 重新安装后,在查询中包含重音符号时,我仍然收到相同的错误消息
  • 您正在使用的 ODBC 驱动程序是 utf16 的问题,使用至少晚于 3.5 的最新版本的 ODBC。 progress.com/tutorials/odbc/unicode
  • 当我运行tsql -C 时,它会响应“TDS 版本:4.2”,当我使用tsql 连接到服务器时,它会响应:语言环境是“en_US.UTF-8”语言环境字符集是“UTF -8" 使用默认字符集 "UTF-8" 我该如何更改?

标签: sql-server ubuntu-14.04 freetds unixodbc


【解决方案1】:

尝试了很长时间后,我发现的解决方案非常简单,并且可以与tsqlisql 一起使用。在 unixODBC 的数据源文件中,我需要设置 TDS_Version=8.0

之前的文件:

[MSSQL]

驱动程序 = FreeTDS

服务器 = XXX.XXX.XXX.XXX

端口 = XXXX

数据库 = 名称

新文件:

[MSSQL]

驱动程序 = FreeTDS

服务器 = XXX.XXX.XXX.XXX

端口 = XXXX

TDS_Version = 8.0

数据库 = 名称

【讨论】:

  • 未来读者请注意:FreeTDS 将 TDS 版本“8.0”别名为 TDS 版本 7.1 以实现兼容性,但警告应避免指定“8.0”。有关详细信息,请参阅Choosing a TDS protocol version 的“关于过时的版本”部分。
猜你喜欢
  • 1970-01-01
  • 2019-09-26
  • 1970-01-01
  • 1970-01-01
  • 2014-11-30
  • 2020-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多