2016-04-18 1 views
0

Je retire des données d'un serveur MSSQL via PDO sur un système Unix. Après avoir essayé le pilote Easysoft ODBC, qui fonctionne comme prévu (mais cher!), Je suis en train d'essayer FreeTDS avant de nous engager à acheter une licence.FreeTDS MSSQL nvarchar (max) numéro

En essayant de retirer des données du serveur SQL défini sur nvarchar (MAX), il apparaît comme des caractères très étranges, plutôt que comme attendu. Je suis incapable d'éditer les types de colonnes dans la base de données. Par exemple, une valeur dans le champ nvarchar (max) est définie sur "admin" mais apparaît comme "> ÷ Ý" - tous les autres types de colonnes semblent fonctionner correctement.

Pour résoudre ce problème avec le pilote Easysoft, je devais régler « VarMaxAsVarchar » à le (http://www.easysoft.com/products/data_access/odbc-sql-server-driver/manual/configuration.html)

Y at-il un cadre similaire à l'intérieur FreeTDS?

Pour référence, je me connecte à une base de données Microsoft SQL Server 2012, avec la version TDS définie sur 7.4.

Voici les fichiers de configuration:

/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 

Toute pensée?

+0

Vérifiez manqué N' littérale avant 'toutes les ressources de chaîne ... – Devart

+0

Quelle version de FreeTDS utilisez-vous? v1.0 est proche de released et est la seule version qui supporte la version 'TDS_Version' 7.4: https://github.com/FreeTDS/freetds/blob/master/NEWS Sinon, ça va revenir à la version 7.1. Vous pouvez trouver notre quelle version vous utilisez avec 'tsql -C'. – FlipperPA

+0

Salut @FlipperPA en utilisant v0.95.91 - ne se rendait pas compte que v1 était en production. Devrais-je attendre, car c'est sur un serveur de production? – spirie

Répondre

0

Coulée de la colonne semble la meilleure option jusqu'à présent, a bien fonctionné pour mon application.

CAST(Column AS varchar(4000)) as Column