Veröffentlicht 15. Oktober 200717 j 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?
15. Oktober 200717 j 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.
15. Oktober 200717 j 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?
15. Oktober 200717 j 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
15. Oktober 200717 j 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 im Netzwerk ein Rechner mit dem Namen RE2001 steht.
15. Oktober 200717 j Adressverwalung ist hoffentlich ein Tippfehler. Ich connecte so: Connection connection = DriverManager.getConnection("jdbc:sqlserver://myhost:1433;databaseName=mydb;user=myuser;password=mypass");
15. Oktober 200717 j Adressverwalung ist schon korrekt so, habe die datenbank versehentlich so angelegt! 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!
15. Oktober 200717 j 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
15. Oktober 200717 j 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
15. Oktober 200717 j 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;
15. Oktober 200717 j habe es schon mit localhost und mit 127.0.0.1 versucht, mit Portnummer und auch ohne!
15. Oktober 200717 j 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.
15. Oktober 200717 j 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!
15. Oktober 200717 j Hi, die DB läuft aber auch,oder? Und ist auch unter dem Port ansprechbar?! Sind manchmal so Dinge, die man übersieht.
15. Oktober 200717 j 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
15. Oktober 200717 j was ist das? kenne ich leider nicht! ja das ding heißt leider so, ist von microsoft so vorgesehen!
15. Oktober 200717 j 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
15. Oktober 200717 j 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ß
18. Oktober 200717 j 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ß
19. Oktober 200717 j 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)
19. Oktober 200717 j 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.