FreeTDS MSSQL nvarchar(max) 问题

FreeTDS MSSQL nvarchar(max) issue

我在 Unix 系统上通过 PDO 从 MSSQL 服务器中提取数据。尝试了 Easysoft ODBC 驱动程序后,它按预期工作(但价格昂贵!)我只是在承诺购买许可证之前试用 FreeTDS。

尝试从设置为 nvarchar(MAX) 的 SQL 服务器中提取数据 - 结果显示为一些非常奇怪的字符,而不是预期的字符。我无法编辑数据库中的列类型。

例如,nvarchar(max) 字段中的值设置为 "admin",但结果显示为“›÷Ý”——所有其他列类型似乎都可以正常工作。

要使用 Easysoft 驱动程序修复此问题,我必须将 "VarMaxAsVarchar" 设置为打开 (http://www.easysoft.com/products/data_access/odbc-sql-server-driver/manual/configuration.html)

FreeTDS 中是否有类似的设置?

作为参考,我连接到 Microsoft SQL Server 2012 数据库,TDS 版本设置为 7.4。

配置文件如下:

/etc/freetds.conf:

[global]
# TDS protocol version
tds version = 7.4

# If you get out-of-memory errors, it may mean that your client
# is trying to allocate a huge buffer for a TEXT field.  
# Try setting 'text size' to a more reasonable limit 
text size = 64512

[mssql_freetds]
    host = xxxxx
    port = xxxx
    tds version = 7.4

/etc/odbc.ini

[mssql_freetds]
Driver=FreeTDS
Description=MSSQL FreeTDS
Server=xxxxx
Port=xxxx
TDS_Version = 7.4

有什么想法吗?

到目前为止,铸造柱子似乎是最好的选择,对我的应用程序来说效果很好。

CAST(Column AS varchar(4000)) as Column