Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Fehler bei Verbindung zu einer MSSQL-Express Datenbank

Empfohlene Antworten

Veröffentlicht

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?

TimeOut bedeutet soviel wie "Kann den Rechner im Netzwerk nicht finden". Kannst du den DB-Server mit dem angegebenen Hostname pingen?

Versuch mal das Ding über die IP-Adresse (incl. Port vom MySql-Express) anzusprechen.

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?

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 ;)

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.

Adressverwalung ist hoffentlich ein Tippfehler.

Ich connecte so:

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

Und mach mal ein System.out.println(connectionUrl);

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!

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

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

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;

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

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.

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!

ja die läuft, sie wird auch von einem andren programm (c#) benutzt

Jop..kommst du per Commandline-Client oder ähnliches drauf?

Aber wie der Rechner RE2001/SQLEXPRESS heißen kann wird mir wohl ein Rätzel bleiben :)

Gruß Sebastian

was ist das?

kenne ich leider nicht!

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

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

das hört sich interessant an, wo mache ich das denn genau?

gruß

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ß

hallo,

habe ich schon alles getan! :)

funktioniert aber nicht! :(

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ß

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)

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ß

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.