Verbinden Sie mit SQL server 2008 mit PDO

Ich versuche, eine Verbindung zu SQL server 2008 (nicht ausdrücklich) mit PHP 5.2.9-2 unter Windows XP sp2. Ich kann eine Verbindung zum Remote SQL server Fine von SQL server Management Studio von der gleichen Maschine.

Mein erster Versuch war das:

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

Was diesen Fehler gibt:

 PHP Schwerwiegender Fehler:  
 Ungehobene exception 'PDOException' mit Nachricht 
 'SQLSTATE [0100] Kann nicht verbunden werden: SQL server ist nicht verfügbar oder existiert nicht.  
 Zugriff abgelehnt.  (Schweregrad 9) 

Zweiter Versuch (bei Experten-Austausch gefunden )

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

Dies funktioniert, aber ich kann nicht PDO::lastInsertId() , die ich gerne in der Lage sein würde:

  Treiber unterstützt diese function nicht: Der Treiber unterstützt keine lastInsertId () 

Hast du irgendwelche Vorschläge? Jede Hilfe wäre sehr dankbar.

Ich bin mir ziemlich sicher, dass pdo mit dem mssql-dataserver-Typ dblib zu verbinden hat. hast du dblib auf der maschine installiert? stellen Sie sicher, dass Sie ntwdblib.dll irgendwo in den Pfad auf Ihrem System finden können. Ich weiß, das geht nicht mit der Fehlermeldung, die du bekommst, aber ich bin mir nicht sicher, dass ich der Fehlermeldung vertraue.

Ich habe ntwdblib.dll aktualisiert, wie hier vorgeschlagen und es funktioniert jetzt.

Leider kann ich immer noch nicht PDO::lastInsertId() weil anscheinend dieser Treiber es auch nicht unterstützt, also war es nicht wirklich den Mühe wert. Ich kann aber auch das Äquivalent SELECT @@IDENTITY as Id .

Dass Sie die SQL server-authentication nicht verwenden können, da nur die Windows-authentication zulässig ist.

Überprüfen Sie, ob der server die Mixed-Mode-authentication ausführt.

Überprüfen Sie auch, ob diese SO-Frage Ihnen hilft.