FreeTDS MSSQL nvarchar(max)问题

时间:2016-04-18 14:01:49

标签: sql-server pdo freetds unixodbc

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

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

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

要使用Easysoft驱动程序修复此问题,我必须将“VarMaxAsVarchar”设置为on(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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

到目前为止,投射列似乎是最好的选择,对我的应用程序一直很好。

CAST(Column AS varchar(4000)) as Column