Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

PHP 5.3 erkennt Native Client nicht, um sich mit MS SQL zu verbinden

Es stellte sich heraus, dass es sich um ein Berechtigungsproblem handelte.

Ich habe in der php.ini die Option fastcgi.impersonate auf 0 geändert und es mit verschiedenen Anwendungspoolidentitäten versucht. Es funktionierte als lokales System. Dies ist ein Konto mit mehr Benutzerrechten als das Konto „Netzwerkdienst“ oder „Lokaler Dienst“. Beachten Sie jedoch, dass das Ausführen eines Anwendungspools unter einem Konto mit erweiterten Benutzerrechten ein hohes Sicherheitsrisiko darstellt. Weitere Referenzen zu den Konten und zur Konfiguration finden Sie in diesen Artikeln:

Konfigurieren Anwendungspoolidentität mit IIS 6.0 (IIS 6.0) Dienstbenutzerkonten Dienstsicherheit und Zugriffsrechte

Ich beschloss, es auf Network Service zurückzusetzen, und lud Process Monitor * herunter. Ich habe es dann verwendet, um den Prozess w3wp zu überwachen, der mir zeigte, dass dieser Zugriff auf einen Registrierungsschlüssel verweigert wurde, in dem der Pfad zu sqlncli.dll gespeichert ist.

HKLM\Software\ODBC\ODBCINST.INI\SQL Native Client 10.0

Also habe ich RegEdit geöffnet und diesen Schlüssel gefunden

Ich habe mit der rechten Maustaste -> Berechtigungen geklickt und den Netzwerkdienst zur Liste hinzugefügt und ihm Leseberechtigungen gegeben.

App-Pool recycelt und jetzt funktioniert es!

Hoffe, das hilft!Federico

*Hier finden Sie einen sehr guten Schritt-für-Schritt-Artikel zur Verwendung des Prozessmonitors.

http://www.iislogs.com/articles/processmonitorw3wp/