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
我在 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