SQL Server verweigert verbindung
Hallo,
ich hoffe mir kann wer helfen.
Ich habe einen MS SQL Express Server und versuche über PHP PDO eine Verbindung aufzubauen.
Hier mein Code:
Ich bekomme als Ergebnis folgende Ausgabe:
Error connecting to SQL Server: SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]TCP-Anbieter: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.
Ich weiß das der Datenbankserver im Netzwerk erreichbar ist. Über das MS SQL Management Studio oder ein C# Programm klappt die Verbindung. Eine Firewall ist nicht dazwischen. Leider finde ich kein Log oder ähnliches was mir sagt warum die Verbindung abgelehnt wird. Zugangsdaten, Servername, Datenbank sind korrekt. Auch der Port ist der Default Port.
Kann mir jemand sagen wie ich den Grund rausfinde warum die Verbindung abgelehnt wird?
ich hoffe mir kann wer helfen.
Ich habe einen MS SQL Express Server und versuche über PHP PDO eine Verbindung aufzubauen.
Hier mein Code:
$servername = "imksv003\\SQLEXPRESS";
$username = "xxxxx";
$password = "xxxxx";
$database = "xxxxx";
$port = "1433";
try {
$con_string = "sqlsrv:server=$servername,$port;Database=$database";
$conn = new PDO($con_string , $username, $password);
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo $conn;
} catch (PDOException $e) {
echo ("Error connecting to SQL Server: " . $e->getMessage());
}
Ich bekomme als Ergebnis folgende Ausgabe:
Error connecting to SQL Server: SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]TCP-Anbieter: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.
Ich weiß das der Datenbankserver im Netzwerk erreichbar ist. Über das MS SQL Management Studio oder ein C# Programm klappt die Verbindung. Eine Firewall ist nicht dazwischen. Leider finde ich kein Log oder ähnliches was mir sagt warum die Verbindung abgelehnt wird. Zugangsdaten, Servername, Datenbank sind korrekt. Auch der Port ist der Default Port.
Kann mir jemand sagen wie ich den Grund rausfinde warum die Verbindung abgelehnt wird?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4307579958
Url: https://administrator.de/contentid/4307579958
Ausgedruckt am: 25.11.2024 um 00:11 Uhr
21 Kommentare
Neuester Kommentar
Doch, \ ist das Escape-Zeichen unter PHP, das muss man escapen, wenn man es als literales Zeichen benutzen will.
"Zielcomputer verweigert die Verbindung" ist relativ universell für "Der Dienst lauscht nicht an der angegebenen Adresse". Vermutlich läuft SQL Express nur Localhost und du kannst nicht standardmäßig über das Netzwerk verbinden.
"Zielcomputer verweigert die Verbindung" ist relativ universell für "Der Dienst lauscht nicht an der angegebenen Adresse". Vermutlich läuft SQL Express nur Localhost und du kannst nicht standardmäßig über das Netzwerk verbinden.
https://www.phparch.com/wp-content/uploads/2010/11/PDO__MSSQLServer.pdf
Hier hab ich nochmal ein Dokument - aber älter gefunden.
Aber du hast keinen SQL 2008 R2 Express oder? Der neue Treiber unterstützt den nicht mehr. Du kannst bei MS auch ältere Versionen laden.
Was für ein Mode hast du? Mixed Mode oder mit AD?
https://stackoverflow.com/questions/857194/php-pdo-connection-to-sql-ser ...
Hier hab ich nochmal ein Dokument - aber älter gefunden.
Aber du hast keinen SQL 2008 R2 Express oder? Der neue Treiber unterstützt den nicht mehr. Du kannst bei MS auch ältere Versionen laden.
Was für ein Mode hast du? Mixed Mode oder mit AD?
https://stackoverflow.com/questions/857194/php-pdo-connection-to-sql-ser ...
Enable Windows Authentication
Disable Anonymous Authentication
remove the username and password from the PDO connection
Disable Anonymous Authentication
remove the username and password from the PDO connection
Zitat von @LordGurke:
Doch, \ ist das Escape-Zeichen unter PHP, das muss man escapen, wenn man es als literales Zeichen benutzen will.
"Zielcomputer verweigert die Verbindung" ist relativ universell für "Der Dienst lauscht nicht an der angegebenen Adresse". Vermutlich läuft SQL Express nur Localhost und du kannst nicht standardmäßig über das Netzwerk verbinden.
Doch, \ ist das Escape-Zeichen unter PHP, das muss man escapen, wenn man es als literales Zeichen benutzen will.
"Zielcomputer verweigert die Verbindung" ist relativ universell für "Der Dienst lauscht nicht an der angegebenen Adresse". Vermutlich läuft SQL Express nur Localhost und du kannst nicht standardmäßig über das Netzwerk verbinden.
Bei mir etwas länger her. Aber schau bitte auch mal hier:
https://www.phparch.com/wp-content/uploads/2010/11/PDO__MSSQLServer.pdf
Hab ihm auch aktuelle MS Doku gegeben. Da verwenden sie kein Escape Zeichen... Ka wie ich das damals gemacht hatte
Die bauen das immer so:
$serverName = ‘CALEVANS-PC\SQLEXPRESS’;
$uid = ‘testuser’;
$pwd = ‘testuser’;
$database = ‘AdventureWorks’;
try {
$conn = new PDO( “sqlsrv:server=$serverName;database=$database”, $uid, $pwd);
Zitat von @NordicMike:
Das TCP Protokoll am SQL Server selbst ist doch per Default erst einmal deaktiviert. Wirde dieses Protokoll aktiviert?
Das TCP Protokoll am SQL Server selbst ist doch per Default erst einmal deaktiviert. Wirde dieses Protokoll aktiviert?
Meine das war mal. Installier die nicht mehr jeden Tag. beim großen war es mein ich immer aktiv.
SQL 2008 R2 - da kenne ich das auch noch.
Zitat von @imkimkimk:
das ist ne Windows Kiste in der selben Domäne. DNS Funkioniert. mit und ohne FQDN. Von der selben Maschine klapppt auch das Management-Studio
das ist ne Windows Kiste in der selben Domäne. DNS Funkioniert. mit und ohne FQDN. Von der selben Maschine klapppt auch das Management-Studio
Das hab ich im Augenwinkel auch noch als Tip gelesen: Mal in die Hostdatei eintragen. Macht wie gesagt keinen Sinn, wenn es so funktioniert. Kannst es aber spaßeshalber einmal eintragen.
PS: Wegen den Express strauchel ich auch gerade!
Nochmal ggf. folgendes durcharbeiten:
1. https://store.oceansystems.com/knowledgebase/quickdme-faqs/sql-server-sq ...
2. Ggf. TCP/IP nach oben schieben
3. Anonymous Login deaktivieren
4. sa oder Windows integriert? Je nachdem die Zeile anpassen
5. Den SQL Server - wie im Hinweis - nach den Änderungen neu starten.
Moin,
welche MS SQL-Server-Version?
Seit 2019 wird eine verschlüsselte Verbindung per Default erwartet.
Entweder in der PHP-Anbindung bewusst deaktivieren (blöde IDee) oder ein selbstsigniertes Zertifikat bereitstellen.
https://codekabinett.com/rdumps.php?Lang=2&targetDoc=create-install- ...
https://support.microsoft.com/en-us/topic/how-to-enable-ssl-encryption-f ...
https://www.der-windows-papst.de/2021/10/04/ssl-self-signed-fallback/
Gruß
em-pie
welche MS SQL-Server-Version?
Seit 2019 wird eine verschlüsselte Verbindung per Default erwartet.
Entweder in der PHP-Anbindung bewusst deaktivieren (blöde IDee) oder ein selbstsigniertes Zertifikat bereitstellen.
https://codekabinett.com/rdumps.php?Lang=2&targetDoc=create-install- ...
https://support.microsoft.com/en-us/topic/how-to-enable-ssl-encryption-f ...
https://www.der-windows-papst.de/2021/10/04/ssl-self-signed-fallback/
Gruß
em-pie