Zum Inhalt springen

Fehler bei Verbindung zu einer MSSQL-Express Datenbank


Empfohlene Beiträge

Geschrieben

Hallo,

ích möchte eine Verbindung zu einer MSSQL SQLEXPRESS Datenbank herstellen aber

es funktioniert leider nicht! :upps


import java.sql.*;


public class _Connect {



    public static void main(String[] args) {


        String connectionUrl = "jdbc:sqlserver://RE2001\\SQLEXPRESS;" +    //RE2001\\SQLEXPRESS;

			"databaseName=Adressverwalung;integratedSecurity=true;"; ^

                                                                            //User ID=sa;Password=dbms


    Connection con = null;

    Statement stmt = null;

    ResultSet rs = null;


    try {

        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

        con = DriverManager.getConnection(connectionUrl);


        String SQL = "SELECT * FROM Adresse";

        stmt = con.createStatement();

        rs = stmt.executeQuery(SQL);



        while (rs.next()) {

            System.out.println(rs.getString("Vorname") + " " + rs.getString("Nachname"));

        }

    }



    catch (Exception e) {

        e.printStackTrace();

    }

Folgender Fehler wird ausgegeben:

com.microsoft.sqlserver.jdbc.SQLServerException: Es konnte keine Verbindung mit der benannten Instanz "" hergestellt werden. Fehler: java.net.SocketTimeoutException: Receive timed out.

at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.getInstancePort(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)

at java.sql.DriverManager.getConnection(DriverManager.java:562)

at java.sql.DriverManager.getConnection(DriverManager.java:208)

at _Connect.main(_Connect.java:18)

Ist der Treiber nur für MS SQL2005 und nicht für die Express-Edition?

Geschrieben

Hallo,

also ich bin weder ein Java noch ein MSSQL Experte, aber...

Es konnte keine Verbindung mit der benannten Instanz "" hergestellt werden. Fehler: java.net.SocketTimeoutException: Receive timed out.

...würde mich vermuten lassen, dass der (leere?) Name irgendwie Probleme bereitet?

Geschrieben

der Name ist ja nicht leer

ich bin mir absolut sicher, dass der server, welcher auf meinem rechner läuft

so heißt -> RE2001/SQLEXPRESS

pingen geht wohl auch ;)

Geschrieben

Wow!

Lies mal die Doku.

Es ist ziemlich uninteressant wie der Server heißt.

Wenn bei mir auf dem Server eine Instanz mit dem Namen xyz läuft kann ich noch lange nicht "ping xyz" ausführen. Was dann dazu führt dass die Datenbankinstanz nicht gefunden werden kann.

Ich kenn die genaue Syntax für dieses Mysql-Express zwar nicht, aber es muss auf jeden Fall der Hostname angegeben werden, lokal dann z.B. "localhost" oder "127.0.0.1".

Die Instanz ist eigentlich uninteressant, da jede Instanz auf nem eigenen Port hört. D.h. über localhost:10001 kommst du an Instanz1, über localhost:10002 auf die Instanz2 u.s.w. Jenachdem wie das ganze konfiguriert ist.

Edit:

ping RE2001

funktioniert? Das bezweifel ich mal. Das funktioniert nur dann wenn

a) der Hostname deines Rechners RE2001 heißt oder

B) im Netzwerk ein Rechner mit dem Namen RE2001 steht.

Geschrieben

Adressverwalung ist hoffentlich ein Tippfehler.

Ich connecte so:

Connection connection = DriverManager.getConnection("jdbc:sqlserver://myhost:1433;databaseName=mydb;user=myuser;password=mypass");

Geschrieben

Adressverwalung ist schon korrekt so, habe die datenbank versehentlich so angelegt! :D

und RE2001 ist der Name meines Rechners ja!

habe es auch schon mit locahlhost probiert, geht aber auch nicht!

jdbc:sqlserver://RE2001\SQLEXPRESS:1433;databaseName=Adressverwalung;integratedSecurity=true;

habe den Standardport hinzugefügt!

Geschrieben

jdbc:sqlserver://RE2001\SQLEXPRESS:1433;databaseName=Adressverwalun g;integratedSecurity=true;

Was macht das leerzeigen in "Adressverwalun g" ?

Versuch mal

jdbc:sqlserver://RE2001/SQLEXPRESS:1433;databaseName=Adressverwalun g;integratedSecurity=true;

Und das Leerzeichen evtl. entfernen

Geschrieben

das leerzeichen hat er mir hier dazugemacht! habe den string kopiert, hat

mich auch schon erstaunt

mit 127.0.0.1:1433 funktioniert es auch nicht

Geschrieben

Ups..würd mal sagen dein Hostname ist falsch.

Die MS-Docu sagt folgendes zu dem ConnectionString:


String connectionUrl = "jdbc:sqlserver://localhost:1433;" +

   "databaseName=AdventureWorks;user=MyUserName;password=*****;";

Wäre in deinem Fall dann

jdbc:sqlserver://localhost:1433;databaseName=Adressverwalung;integratedSecurity=true;

Geschrieben

habe es schon mit localhost und mit 127.0.0.1 versucht, mit Portnummer und auch ohne! :)

Geschrieben

Versuch es so wie ich geschrieben hab.

In deinem Connectionstring hängt nach dem Server (//RE2001/) noch "\SQLEXPRESS" dran, was meiner Meinung und der Dokumentation nach falsch ist.

Copy&Past mit dem letzten von mir geposteten Connectionstring.

Geschrieben

habe ich auch schon probiert!

Da ich den Express Server habe, heißt das Ding dann so --> Rechnername/SQLEXPRESS

da kann ich leider nichts machen!

habe aber wie gesagt, schon genannte x mal probiert!

Geschrieben

was ist das?

kenne ich leider nicht!

ja das ding heißt leider so, ist von microsoft so vorgesehen!

Geschrieben

Hast du die Verbindungsmöglichkeiten vom SQLServer angepasst?

Standardmäßig lässt die Express-Edition nämlich nur SharedMemory-Verbindungen zu, da kommst mit jdbc nicht weit. Du musst ihn also so konfigurieren, dass er Verbindungen auch über TCP entgegennimmt.

Das machst du entweder unter Systemsteuerung->Verwaltung->Computerverwaltung oder mit dem SQL Management Studio Express

Geschrieben

Hi, also so viel ich weiß muss der Instanzname aufjedenfall mit dazu.

Den MS SQL Server kenne ich, leider bin ich in Java nicht so fit, dass ich dir den Connection-String posten kann.

Downloade dir mal von Microsoft das Management Studio, sofern noch nicht vorhanden. Hier kannst du dich auf das Datenbankmodul connecten, wober der Server so angegeben wird "Hostname\Instanz"

So kannst du feststellen ob alle Dienste ordnungsgemäß laufen.

Die TCP Connectioneigenschaft aktivierst du folgendermaßen:

Start -> Programme -> SQL Server -> Konfigurationstools -> SQL Server Configuration Manager

Hier musst du unter Netzwerkkonfiguration das Protokoll aktivieren.

Gruß

Geschrieben

Also ich habs bei mir mal gerade nachgebaut. Und es klappt.

Mein/DEIN Quellcode:

import java.sql.*;

public class _Connect {

public static void main(String[] args) {

String connectionUrl = "jdbc:sqlserver://localhost;" + //RE2001\\SQLEXPRESS;

"databaseName=Adressverwalung;integratedSecurity=true;";

//User ID=sa;Password=dbms

Connection con = null;

Statement stmt = null;

ResultSet rs = null;

try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

con = DriverManager.getConnection(connectionUrl);

String SQL = "SELECT * FROM Adresse";

stmt = con.createStatement();

rs = stmt.executeQuery(SQL);

while (rs.next()) {

System.out.println(rs.getString("Vorname") + " " + rs.getString("Nachname"));

}

}

catch (Exception e) {

e.printStackTrace();

}

}

}

Probiers mal...

Gruß

Geschrieben

com.microsoft.sqlserver.jdbc.SQLServerException: Es konnte keine TCP/IP-Verbindung mit dem Host hergestellt werden. java.net.ConnectException: Connection refused: connect

at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)

at java.sql.DriverManager.getConnection(DriverManager.java:562)

at java.sql.DriverManager.getConnection(DriverManager.java:208)

at _Connect.main(_Connect.java:17)

Geschrieben

TCP ist aktiviert? Hast du danach auch den Dienst neu gestartet? Das musst du nämlich.

Weil das hatte ich auch, dann hab ich TCP aktiviert, Dienst ("SQL Server (MSSQLSERVER)") neugestartet und schon hats geklappt

Gruß

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...