Problème avec la connection à la database MSSQL

J'ai un server Ubuntu 12.04 et j'essaye d'établir une connection à une database MSSQL.

J'ai réussi à me connecter en utilisant tsql et isql , mais osql ne fonctionne pas et se connecter avec PHP en utilisant PDO ne fonctionne pas non plus .. Je vais essayer de fournir autant d'informations que possible et si vous avez besoin de plus, faites le moi savoir et je vais modifier.

freetds.conf :

 [MSSQL] host = TPSACC port = 54488 tds version = 8.0 

odbc.ini :

 [MSSQL] Description = MS SQL connection to PRODUCTION database Driver = FreeTDS Database = PRODUCTION Server = TPSACC UserName = sa Password = pass Trace = No TDS_Version = 8.0 Port = 54488 

odbcinst.ini :

 [FreeTDS] Description = ODBC for Microsoft SQL Driver = /usr/local/lib/libtdsodbc.so UsageCount = 1 Threading = 2 

~> isql MSSQL sa passe

 +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> 

~> tsql -S MSSQL -U 'sa' -P 'passe'

 locale is "en_US.UTF-8" locale charset is "UTF-8" using default charset "UTF-8" 1> 

~> osql -S MSSQL -U sa -P passe

 checking shared odbc libraries linked to isql for default directories... ssortingngs: '': No such file trying /tmp/sql ... no trying /tmp/sql ... no trying /etc ... OK checking odbc.ini files reading /home/toolplas/.odbc.ini [MSSQL] not found in /home/toolplas/.odbc.ini reading /etc/odbc.ini [MSSQL] found in /etc/odbc.ini found this section: [MSSQL] Description = MS SQL connection to PRODUCTION database Driver = FreeTDS Database = PRODUCTION Server = TPSACC UserName = sa Password = pass Trace = No TDS_Version = 8.0 Port = 54488 looking for driver for DSN [MSSQL] in /etc/odbc.ini found driver line: " Driver = FreeTDS" driver "FreeTDS" found for [MSSQL] in odbc.ini found driver named "FreeTDS" "FreeTDS" is not an executable file looking for entry named [FreeTDS] in /etc/odbcinst.ini found driver line: " Driver = /usr/local/lib/libtdsodbc.so" found driver /usr/local/lib/libtdsodbc.so for [FreeTDS] in odbcinst.ini /usr/local/lib/libtdsodbc.so is an executable file "Server" found, not using freetds.conf Server is "TPSACC" osql: no IP address found for "TPSACC" 

En PHP j'ai:

 $conn = new PDO ("dblib:host=TPSACC;dbname=PRODUCTION","$username","$pw"); 

..ou..

 $conn = new PDO ("dblib:host=TPSACC;port=54488;dbname=PRODUCTION","$username","$pw"); 

Et ils returnnent tous les deux cette erreur:

 SQLSTATE[HY000] Unable to connect: Adaptive Server is unavailable or does not exist (severity 9) 

Je suis coincé ici depuis quelques jours et je n'arrive pas à comprendre pourquoi seulement la moitié des connections fonctionnent réellement.

Toute aide est vraiment appréciée, merci!

EDIT: Il est différent de cette question, j'ai expliqué dans un commentaire, mais repost ici:

Pour celui-là le problème était que le port a été changé de 1433. Le mien a été également changé et j'ai arrangé cela, le port est maintenant 54488 et depuis ce changement tsql et isql ont fonctionné. Cependant, il ne résout toujours pas les problèmes osql et PHP.

osql étouffe sur quelque chose dans votre configuration. osql est un utilitaire de debugging qui vérifie simplement votre configuration, puis passe à isql d'unixODBC pour se connecter ( http://linux.die.net/man/1/osql ). Essayez ceci pour votre odbc.ini:

 [MSSQL] Driver = FreeTDS Description = MS SQL connection to PRODUCTION database Server = tpsacc.yourfulldomain.com Port = 54488 TDS_Version = 7.2 Database = PRODUCTION UserName = sa Password = pass Trace = No 

Aussi, êtes-vous sûr que c'est l'location correct pour libtdsodbc.so? Quand j'installe freetds-dev avec Ubuntu 14 x64 (utopic), il s'installe dans /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so; exemple odbcinst.ini:

 [FreeTDS] Description = v0.91 with protocol v7.2 Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so 

Et pour faire bonne mesure, le freetds.conf typique que j'utilise:

 # A typical Microsoft server [MSSQL] host = tpsacc.yourfulldomain.com port = 54488 tds version = 7.2 

FreeTDS prend uniquement en charge la version 7.2 de TDS avec la plupart des langues. Alors que l'utilisation de "8.0" ne devrait pas casser quoi que ce soit, l'utilisation de 7.2 est préférable pour la cohérence. Si vous avez besoin de vérifier la reference, j'ai une boîte Vagrant avec une configuration complète disponible ici, avec des exemples: https://github.com/FlipperPA/django-python3-vagrant/ Bonne chance!