2009-04-28 11 views
0

J'essaie de me connecter à SQL Server 2008 (non express) avec PHP 5.2.9-2 sur Windows XP SP2. Je peux me connecter au serveur SQL distant à partir de SQL Server Management Studio à partir de la même machine.Connexion à SQL Server 2008 avec PDO

Ma première tentative était la suivante:

$conn = new PDO("mssql:host={$host};dbname={$db}", $user, $pass); 

Ce qui donne cette erreur:

 
PHP Fatal error: 
Uncaught exception 'PDOException' with message 
'SQLSTATE[0100] Unable to connect: SQL Server is unavailable or does not exist. 
Access denied. (severity 9)'

deuxième tentative (qui se trouve sur experts-exchange)

$conn = new PDO("odbc:Driver={SQL Server Native Client 10.0};Server={$host};Database={$db};Uid={$user};Pwd={$pass}", 
         $user, $pass); 

Cela fonctionne, mais je peux » t utiliser PDO::lastInsertId(), que je voudrais pouvoir:

 Driver does not support this function: driver does not support lastInsertId()

Avez-vous des suggestions? Toute aide serait grandement appréciée.

Répondre

1

Je suis à peu près sûr que pdo avec le type de serveur de données mssql nécessite dblib pour se connecter. Avez-vous dblib installé sur la machine? Assurez-vous que vous pouvez trouver ntwdblib.dll quelque part dans le chemin sur votre système. Je sais que cela ne jive pas avec le message d'erreur que vous obtenez, mais je ne suis pas sûr que je fais confiance au message d'erreur.

0

That you cannot use SQL Server authentication because only Windows authentication is permitted.

Vérifiez si le serveur est running Mixed mode authentication.

Vérifiez également si this SO question vous aide.

+0

Merci pour votre inscription. L'autre question n'avait pas de solution cependant. Il exécute le mode mixte car je peux me connecter via SQL Server Management Studio en utilisant l'authentification Windows ou en utilisant un identifiant SQL Server que j'ai créé pour la base de données. –

1

J'ai mis à jour ntwdblib.dll comme suggéré here et cela fonctionne maintenant.

Malheureusement je ne peux toujours pas utiliser PDO::lastInsertId() car apparemment ce pilote ne le supporte pas non plus, donc ça ne valait pas vraiment la peine. Je peux cependant utiliser l'équivalent SELECT @@IDENTITY as Id.

Questions connexes