Bonjour à tous,

Je rencontre des problèmes de communication entre un serveur RedHat et un serveur Microsoft SQL.
Le but est de remplir un formulaire en php. La requete se passe bien mais je ne récupère que 255 caractères en retour...
Dans ces formulaires, on retrouve deux champs de type texte et qui sont enregistrés dans une table sql serveur, dans un champ de taille 2000 et de type nvarchar. A la restitution, le formulaire php ne me renvoie que les 255 premiers caractères.
Lorsque je teste de faire des requetes en isql, je ne recois que les 255 premiers caractères.

La configuration est la suivante :
-1 serveur RedHat 2.6.18-308.8.2.el5 x64
-- apache httpd-2.2.3-65.el5_8
-- php php-5.1.6-39.el5_8
-- freetds freetds-0.91-2.el5 & freetds-devel-0.91-2.el5
+
-1 serveur MSSQL Windows 2003 R2 x86
--Microsoft SQL 2008 R2

Pour faire communiquer le serveur RedHat et le serveur SQL, j'utilise FreeTDS.
Ci-dessous la configuration de mes fichiers :

freetds.conf
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
[global]
# TDS protocol version
tds version = 7.1
dump file = /tmp/freetds.log
debug flags = 0xffff
text size = 64512
[SRVSQLOSIDEV-RH]
host = srvsqlosi-dev
instance = dosidev
port = 111
tds version = 8.0
database = RH
odbcinst.ini
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
[FreeTDS]
Description = FreeTDS unixODBC Driver
Driver = /usr/lib64/libtdsodbc.so
Setup = /usr/lib64/libtdsS.so.1	
UsageCount = 4
odbc.ini
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
[SRVSQLOSIDEV-RH]
Driver          = FreeTDS                     # [NOM_DU_DRIER] le meme que dans odbcinst.ini
Description     = SRVSQLOSIDEV-RH
Server          = srvsqlosi-dev\dosidev      
Trace           = Yes                         
TraceFile       = /var/log/freetds.log        
Port            = 1119                        
TDS Version     = 8.0                         
client charset  = UTF-8                       
Database        = RH                          
User            = ********                    
Password        = ********                    
Option          = 3                           
ReadOnly        = No
La communication entre les serveurs est OK :

Pour vérifier le driver, la connexion tsql passe bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
		tsql -S NOM_BASE -U login -P password
		> OK
Pour tester l'envoi de requête, la connexion isql passe bien également
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
		isql -v NOM_BASE login password
		> OK
MAIS au moment de lancer une requete en isql
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
>SELECT accident_circonst FROM T_Agr where agr_Id=412
resultat = Mr xxxxxxx Ã*contacter le rds d interim (************) Ã* 9H30 en indiquant ne pas se sentir capable de travailler aujourd hui suite Ã* de violentes douleurs abdominales depuis plusieurs jours en précisant qu il avait eu beaucoup de mal Ã* se rendr|
Je n'obtiens pas le resultat complet. Il y a un résultat avec une "|" à la fin, le reste du message n'apparait pas.
Si je teste la requete sur le serveur SQL (management studio), je n'ai aucun problème, le résultat est complet...

Ma question : FreeTDS est-il capable de renvoyer plus de 255 caractères en nvarchar.
Sur la documentation, il me semble que c'est possible.

Merci d'avance pour vos réponses