J’ai dû récemment mettre en place de quoi attaquer un server Microsoft MS SQL Server 2000 depuis une plateforme Linux/Apache/PHP. Sous Debian Etch il existe le module php5-sybase censé géré Sybase et MSSql. Le problème c’est que php est compilé sans le support de sqlserver. Du coup il restait soit ODBC soit recompiler PHP m’obligeant à recompiler PHP à chaque mise à jour d sécurité… J’ai donc choisi ODBC. Dans un premier temps on installe le module PHP :
# apt-get install php5-odbc
Par un appel à phpinfo(); on vérifie que odbc est bien géré.
Ensuite on installe freetds qui est la couche sur laquelle ODBC s’appuie pour gérer MSSQL :
# apt-get install freetds-dev
Puis dans le fichier /etc/freetds/freetds.conf on définit le serveur SQL Server :
[ServerBDDMS] host = 192.168.1.14 port = 1433 tds version = 7.0
# On installe odbc version Unix :
# apt-get install tdsodbc unixodbc Dans le fichier/etc/odbcinst.ini on définit un pilote pour notre connexion :
[FreeTDS] Description = Connexion MsSQL Driver = /usr/lib/odbc/libtdsodbc.so Setup = /usr/lib/odbc/libtdsS.so FileUsage = 1 CPTimeout = 5 CPReuse = 5
Enfin le fichier /etc/odbc.ini contient un nom de connexion et le nom de la base. Et surtout on y indique les pilote odbc et nom de serveur définits plus haut.
[ClientX] Description = Produits du client Driver = FreeTDS Servername = ServeurBDDMS Database = produits_client
Si tout est ok la commande : isql -v client X