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.
Et également 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 :
Code : Tout sélectionner
freetds.conf
[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 = 1119
tds version = 8.0
database = RH
Code : Tout sélectionner
odbcinst.ini
[FreeTDS]
Description = FreeTDS unixODBC Driver
Driver = /usr/lib64/libtdsodbc.so
Setup = /usr/lib64/libtdsS.so.1
UsageCount = 4
Code : Tout sélectionner
odbc.ini
[SRVSQLOSIDEV-RH]Driver = FreeTDS
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 : Tout sélectionner
tsql -S NOM_BASE -U login -P password
> OK
Pour tester l'envoi de requête, la connexion isql passe bien également
Code : Tout sélectionner
isql -v NOM_BASE login password
> OK
MAIS au moment de lancer une requete en isql
Code : Tout sélectionner
>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|
Si je teste la requete directement 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