我在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
有什么想法吗?
答案 0 :(得分:0)
到目前为止,投射列似乎是最好的选择,对我的应用程序一直很好。
CAST(Column AS varchar(4000)) as Column