2016-04-18 14 views
0

私は、Unixシステム上のPDO経由でMSSQLサーバからデータを取り出しています。私はライセンスを購入する前にFreeTDSを試しています。FreeTDS MSSQL nvarchar(max)issue

nvarchar(MAX)に設定されているSQLサーバーからデータを取り出そうとしていますが、これは予想されるものではなく、非常に奇妙な文字です。データベースの列の種類を編集できません。

たとえば、nvarchar(max)フィールドの値は「admin」に設定されていますが、「>÷Ý」として出力されます。他のすべての列タイプは正常に動作しているようです。 EasySoftのドライバでこの問題を解決するには

、私は上に「VarMaxAsVarchar」を設定する必要がありました(http://www.easysoft.com/products/data_access/odbc-sql-server-driver/manual/configuration.html

FreeTDSの中から同様の設定はありますか?

参考として、TDSバージョンを7.4に設定して、Microsoft SQL Server 2012データベースに接続しています。ここで

は、設定ファイルである:

/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

すべての文字列リソースの前に見つからなかった「N」リテラルを確認してください... – Devart

+0

FreeTDSのどのバージョンをお使いですか? v1.0はリリースされたばかりで、 'TDS_Version'バージョン7.4をサポートする唯一のバージョンです:https://github.com/FreeTDS/freetds/blob/master/NEWSそれ以外の場合、バージョン7.1にフォールバックします。あなたは 'tsql -C'であなたが使っているバージョンを見つけることができます。 – FlipperPA

+0

こんにちは@FlipperPA v0.95.91を使用しています - v1が生産中であることを認識していませんでした。これはプロダクションサーバー上にあるので、私は待ちますか? – spirie

答えて

0

これまでのところ、キャスティングが最適な選択肢と思われ、私のアプリケーションではうまくいきました。

CAST(Column AS varchar(4000)) as Column 
関連する問題