Montag, 26. Juni 2006

PHP5, MSSQL - mssql_connect Unable to connect to server

Das Verbinden zu einem MSSql-Server ist nicht ganz so trivial, wie ich zunächst dachte. Eigentlich sollte alles so Problemlos wie mit MySQL gehen, mit dem Unterschied das der Funktionspräfix statt mysql_ mssql_ lautet...

PHP und MSSQL

PHP ist eine mächtige Scriptsprache mit einem großen Funktionsumfang. Unter anderem Unterstützt PHP auch das Arbeiten mit MSSQL-Servern. Als ich heute versucht habe mich mit einem MSSQL-Sever mit PHP zu verbinden, bekam ich, zu meiner Überraschung keine Verbindung zu Server.

Das System, auf das PHP-Script läuft, welches sich mit dem Datenbankserver verbindet, ist ein Windows 2000 SP 4 Computer und der Datenbankserver ein Windows 2003 Server mit MSSQL 2000.

Testscript

Download Code!

  1.  
  2. <?php
  3.  
  4. $server = 'MSSQLHost';
  5. $database = 'foo';
  6.  
  7. if(!$handle = mssql_connect($server, '', '')) die('Keine Verbindung möglich!');
  8. mssql_select_db($database, $handle);
  9.  
  10. $query = 'SELECT * FROM bar';
  11.  
  12. $result = mssql_query($query, $handle);
  13.  
  14. echo '<pre>';
  15. while($row = mssql_fetch_assoc($result)) {
  16.         print_r($row);
  17. }
  18. echo '</pre>';
  19.  
  20. mssql_close($handle);
  21.  
  22. ?>
  23.  

Verbinden zum MSSQL-Server nicht möglich

Der Test wurde mit einem: Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server quittiert. Nachdem alle anderen Möglichkeiten, wie beispielsweise Netzwerkverbindungen, ausgetestet wurde und immer noch keine Verbindung möglich war, suchte ich im Internet nach einer Lösung. Leider sind es ziemlich viele Lösungsansätze, doch hatt sich das bei mir bewährt.

Lösung zum mssql_connect Problem

Als erstes Installiert man von der CD, mit der der MSSQL-Server installiert wurde, die Tools welche mitgeliefert werden, wie beispielsweise: Client Network Utility, Query Analyzer, Enterprise Manager usw.

Dann auf der CD nach der Datei ntwdblib.dll suchen und diese einmal in den System32 Ordner von Windows, sowie in das PHP Installationsverzeichnis kopieren. Wenn man gefragt wird, ob man überschreiben möchte, ist man an der richtigen Stelle

Jetzt sollte man wissen, ob die Authentifizierung (bei der Datenbank) über SQL oder über NT-Authentifizierung geschieht. Wenn es über NT-Authentifizierung läuft, muss man in der php.ini nach folgendem Eintrag suchen:
mssql.secure_connection und den Schalter auf On setzen.

Jetzt sollte es funktionieren.

Bewertung: 2 von 5, 1 Stimme(n) 6275 Klicks
Probleme und Lösungen
Von Mr.Foo in Probleme und Lösungen am 26.06.06@12:12 Uhr

Trackbacks
Trackback für spezifische URI dieses Eintrags

Keine Trackbacks

15 Kommentare
Ansicht der Kommentare: (Linear | Verschachtelt)

BOBAH - #1 - 08.11.2006 09:00 - (Antwort)

Hi!
Das ist leider nicht alles, da dem Server gesagt werden muss, wer alles auf die DB zugreifen darf.

Es wäre sonst zu einfach. ;-)

Gruß

willi - #2 - 06.11.2007 13:05 - (Antwort)

ja bei mir geht es immer noch nicht, kommt immer noch die gleiche fehlermeldung.

Mr. Foo - #3 - 06.11.2007 13:32 - (Antwort)

Was hast du bis jetzt gemacht?

willi - #4 - 06.11.2007 16:02 - (Antwort)

- ntwdblib.dll in die entsprechenden verzeichnisse.
- mssql.secure_connection und den Schalter auf On setzen
- mssql.secure_connection und den Schalter auf Off setzen

beide einstellungen kein erfolg. meine vermutung, das ich am mssql-server noch was machen muß, hab nur kein plan was.

Mr. Foo - #4.1 - 08.11.2007 21:31 - (Antwort)

Hast du schon die Rechte des MSSQL-Nutzers überprüft?

jack - #5 - 16.03.2008 08:19 - (Antwort)

hi foo,

you just made my day!

endlich habe ich die mssql verbindung bekommen.

der hinweis mit mssql.secure_connection auf 'on' hat's ermöglicht.

vielen DANK!!

Fu - #6 - 13.06.2008 12:08 - (Antwort)

Was für ein sinnloser beitrag.
m$ sql .. erstmal dreck, da sie eh alles von der sybase geklaut haben, wie alles andere auch nciht auf deren eignen mist gewachsen sind...

nur das sie die treiberschnittstelle umgecodet haben, sodass man schlecht mit dem org sybase drauf zu greifen kann.


also viel spass ihr spinner..

Mr. Foo - #6.1 - 13.06.2008 18:02 - (Antwort)

Einfach köstlich :-)

PS. Die Pillendosen verwechselt?

andi - #6.2 - 19.02.2009 12:30 - (Antwort)

oder war der morgenkaffee kalt? kopfschüttel

Guest 1 - #7 - 25.06.2008 00:18 - (Antwort)

Vielen Dank.
Es war nicht als mssql tutorial gedacht, hat mir aber meine ersten befehle erklärt.

Flo - #8 - 28.08.2008 15:41 - (Antwort)

Ich hab alles gemacht was hier steht und auch alles was auf 1000 anderen seiten steht

mein system. das php file liegt direkt am server ich arbeite auf meinen Standrechner welcher mit dem SQL Managment Studio eine verbindung bekommt.

am Server läuft SQLExpress 2005 mit Browsing aktiviert trotz allem findet das php script welches unter xampp läuft den dummen mssql server nicht !!


was ich schon alles versucht habe:
-ntwdblib.dll ins php und ins sys32 verzeichniss
-tcp/ip und namepipes protocolle aktivieren
-da ich mich direkt als SA conecte werden rechte wohl kaum das problem sein^^
-hab alle möglichen schreibweißen probiert wie localhost/SQLExpress localhost:1433 localhost,1433 ..
-und alles mögliche was man per google zu diesem problem noch so findet ..

wenn mir jemand helfen kann einfach antworten oder mailen dsa wär sehr net^^ (email: markus.florian@gmx.net)

Mr. Foo - #8.1 - 29.08.2008 14:23 - (Antwort)

Ist der MsSQL-Server jetzt lokal, oder liegt er auf einem entfernten Rechner?

Hieu Le - #9 - 05.03.2009 11:45 - (Antwort)

Unter Windows benutzt man Name Pipe.
In diesem Fall ist "SQLExpress" einzutragen.

pluspunkt - #9.1 - 20.07.2009 15:55 - (Antwort)

schaut mal hier,

http://techrepublic.com.com/5208-6230-0.html?forumID=101&threadID=227248&messageID=2266046

bei mir lag es an den Name pipes!

gl hf...

CongoFX - #10 - 28.12.2010 14:20 - (Antwort)

Bezüglich "Lösung zum mssql_connect Problem", ich sehe dass das Thema zwar schon ein paar Jährchen alt ist, aber ich hatte heute Nacht mit einem Problem zu kämpfen dass die mssql Extension um's Verrecken nicht geladen werden konnte und nirgends eine Antwort erhalten.

Meine Konstellation, ein Windows 2008 Server (x86) mit MSSQL 2008 R2 Server und PHP über den Web Platform Installer installiert, es läuft als Fast CGI Modul.

Wer trotz korrekt konfigurierter php.ini nicht mit dem SQL Server verbinden kann, da die mssql Extension nicht geladen werden kann sollte mal folgendes ausprobieren:

Shell öffnen und "php -m" ausführen, wenn nun ein Dialog erscheint in dem steht dass die "MSVCR71.dll" fehlt dann diese hier http://www.dlldump.com/download-dll-files.php/dllfiles/M/MSVCR71.dll/download.html downloaden und in das Verzeichnis "C:\Windows\System32" kopieren.

Vorsicht, ich bin mir nicht sicher ob die x86 dll unter x64 läuft und habe daher eine x64 dll in diesem Post hinterlegt http://www.tutorials.de/php/253095-unable-connect-server-mssql_connect.html#post1919165. Diese unter dem x64 System in das "C:\Windows\SysWOW64" Verzeichnis kopieren.

Sichergehen dass die MSSQL Extension existiert, "php -m" sollte keine Fehlermeldungen mehr ausgeben, falls doch dann mal nachsehen ob die Module installiert sind "Start" -> "Systemsteuerung" -> "Programme und Funktionen" -> "PHP 5.x.x" -> "Ändern" (oben) -> PHP Setup Fenster "Weiter" -> "Ändern" -> "IIS Fast CGI" -> "Extensions" erweitern -> "MSSQL" auswählen -> "PDO" erweitern -> "Microsoft SQL Server" auswählen -> "weiter" -> "Ändern" und Installation abschließen.


Kommentar schreiben

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Sie können [geshi lang=LANG][/lang] Tags verwenden um Quellcode abhängig von der gewählten Programmiersprache einzubinden
 
 

Mr. Foo

PHP5, MSSQL - mssql_connect Unable to connect to server

  • Homepage

Suche

Kategorien

  • Android (2)
  • C-Sharp (4)
  • Datenbank (30)
  • Delphi (2)
  • Entwicklung (36)
  • Flash (5)
  • Games (10)
  • Gutscheine (4)
  • Hardware (14)
  • HTML CSS (16)
  • Internet (88)
  • Java (32)
  • Javascript (24)
  • Linkdump (9)
  • Linux (102)
  • Low-Level (10)
  • Lua (8)
  • Musik (9)
  • Netzwerk (25)
  • New World Order (109)
  • Perl (3)
  • PHP (130)
  • Magento (5)
  • Symfony (3)
  • Zend Framework (7)
  • Probleme und Lösungen (26)
  • Python (22)
  • Ressourcen (23)
  • Sicherheit (91)
  • Software (60)
  • Sonstiges (47)
  • Own Stuff (48)
  • Spass (46)
  • Technik / Wissenschaft (4)
  • Tips (15)
  • Weisheiten (17)
  • Windows (23)
  • Wort des Tages (15)


Alle Kategorien

Archive

  • Mai 2012
  • April 2012
  • März 2012
  • Das Neueste ...
  • Älteres ...

Abonnieren lohnt sich!

  • XML RSS 2.0 feed
  • ATOM/XML ATOM 1.0 feed
  • XML RSS 2.0 Kommentare

Tagcloud

Datenbank Entwicklung Internet Java Javascript Linux Lösung Netzwerk News New World Order PHP Problem Probleme und Lösungen Sicherheit Software Sonstiges Spass Tipp Update Windows

Beliebte Einträge

  • Magento ist scheisse (197)
  • Plugin-container.exe deaktivieren (107)
  • BWin Betrug und Abzocke bei Minigames? (65)
  • C compiler cannot create executables unter Debian (53)
  • Scheiss Linux - USB-Platte viel zu langsam (wenns mal funktioniert) (43)
  • Sicheres Kontaktformular mit PHP - Spam verhindern (37)
  • UML-Diagramme aus Java-Klassen generieren – Java2UML (28)
  • Es konnte keine TCP/IP-Verbindung mit dem Host hergestellt werden (28)
  • Option Bug im Internet Explorer bei Nutzung von innerHTML und Javascript (24)
  • Zend Studio - Javaw.exe lastet die CPU aus (24)

Kommentare

Hugo zu BWin Betrug und Abzocke bei Minigames?
So, 20.05.2012 12:25
ich habe mich gestern auf BWIN reg [...]
Ubuntu 12.04 zu The assembly mscorlib.dll was not found or could not be loaded.
Fr, 18.05.2012 17:11
Hat bei mir leider nicht geklappt. [...]
Oliver Riske zu Es konnte keine TCP/IP-Verbindung mit dem Host hergestellt werden
Di, 15.05.2012 20:38
Super Danke!
anon zu BWin Betrug und Abzocke bei Minigames?
Sa, 05.05.2012 18:43
ihr scheiss betrüger
Jürgen zu Unable to elevate error:1814 VLC Problem
Mi, 02.05.2012 16:54
So einfach ist es bei mir jedenfal [...]
 

Kontakt/Informationen