Windows, SQL Server Express et… PHP

Je sais, le titre sonne bizzar. On ne peut s’empêcher de se demander pourquoi chosir PHP alors qu’on travaille avec Windows et SQL Server ou bien pourquoi Windows et SQL Server alors qu’on désire PHP ? Dans mon cas, la raison est fort simple : dans un contexte de stage, on ne fait pas tout ce que l’on veut. Pour des raisons comme l’administration des serveurs, je me dois de travailler avec Windows et SQL Server. Mais le but de ce billet n’est pas de vous expliquer les raisons ni encore moins mes opinions face à ça, mais plutôt de vous aider à faire fonctionner les 3 ensemble.

Au tout début de mon stage, je savais que j’allais avoir à retapper certaines pages PHP parlant avec une base de données (qui n’est pas SQL Server). Lors de la migration des données vers SQL Server (pour augmenter la rapidité du côté non-Web), je ne me suis pas trop attardé à l’aspect PHP, car je le connais puissant et flexible. Cependant, j’ai eu quelques problèmes pour parler à une instance SQL Server Express 2005 à l’aide de PDO.

En effet, j’ai chosi de migrer les pages en PHP4 (ou plutôt un mélange entre la version 3 et 4…) vers PHP5 et d’utiliser PDO pour son côté pratique advenant un autre changement de base de données, mais aussi pour ses performances et son utilisation objet. J’avais lu dans la documentation officielle que les pilotes ODBC pour PDO ne fonctionnaient pas très bien avec SQL Server Express 2005… et ils avaient raison. J’ai obtenu toutes sortes de problèmes que ce soit au passage de paramètres à l’exécution de requêtes préparées ou encore la réception de la réponse à une requête (SELECT par exemple). Et puisque j’avais déjà essayé de me connecter à la base de données avec les pilotes MSSQL (ou DBLIB) pour PDO, je n’étais pas capable. Mais j’ai finalement réussi. Voici la prodédure :

  1. Vérifier que les connexions distantes sont bien possibles à l’aide de l’outil “Configuration de la surface d’exposition SQL Server”
  2. Vérifier que vous pouvez bien vous connecter avec l’usager “sa” (Super Admin) – créer un mot de passe pour cet usager en particulier
  3. Au besoin, testez la connexion avec le programme “SQL Server Management Studio Express CTP” sur un ordinateur distant de la base de données (quant au nom de l’instance, vous devrez l’entrer sous le format “{nom de la machine}\SQLEXPRESS” ou “{IP}\SQLEXPRESS
  4. Quant tout cela fonctionne, vérifier que les extensions PHP_PDO et PHP_PDO_MSSQL sont bien chargées (avec phpinfo() par exemple) – sinon les ajouter au fichier php.ini et redémarrer le serveur Web)
  5. Le fichier ntwdblib.dll fourni avec php-5.1.2 n’est pas le bon pour pouvoir se connecter à l’instance. Vous devez télécharger Tagged: , ,

  • Alex

    merci merci merci et encore merci, deux jours et demi que je suis bloqué, impossible de se connecter au serveur qu’il me dit sans arret, et après moulte recherche je tombe sur ce bijoux de clarté qui m’a réglé mon problème en 5 minutes donc encore merci

  • Leo

    Salut,
    Voila j’ai un pb de ton type, que je n’arrive tj pa a resoudre. J’essai de me connecter a partir de mon appli php a une base MS SQL EXPRESS 2005, en interne sur mon pc. Mais pas moyen d’executer les requetes (d’avoir un resultat), pourtant tous ce que tu a indique a ete fait (PDO chargé,dll,”sa”,…). il indique que la connexion est OK et l’envoi de la requete aussi mais pas de resultat.
    Merci de ton aide.