# Fehler bei der Verbindung zu einer MSSQL/Express Datenbank!



## mr.freeze (15. Okt 2007)

Hallo, 

ích möchte eine Verbindung zu einer MSSQL SQLEXPRESS Datenbank herstellen aber
es funktioniert leider nicht! :cry: 


```
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 wir 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?


----------



## tuxedo (15. Okt 2007)

Die connectionUrl  kommt mir etwas seltsam vor mit dem Backslash ... Sicher dass die korrekt ist?

- Alex


----------



## mr.freeze (15. Okt 2007)

Mein Server "heißt" so --> RE2001\SQLEXPRESS


----------



## maki (15. Okt 2007)

> Mein Server "heißt" so --> RE2001\SQLEXPRESS


Anscheinend kommt das aber nicht beim Server an:



> Es konnte keine Verbindung mit der benannten Instanz *""* hergestellt werden.


----------



## mr.freeze (15. Okt 2007)

ja und warum?


----------



## maki (15. Okt 2007)

Wie heisst denn deine DB?


----------



## tuxedo (15. Okt 2007)

Die Sachen mit "\\" in der Adresse sind AFAIK "M$-Verseucht" und sollten in "normalen" URLs nicht vorkommen. 

Schau mal hier:
http://cwiki.apache.org/CAY/database-support.html

Da ist die URL wie folgt erklärt:


```
jdbc:sqlserver://127.0.0.1;databaseName=dbname
```

Statt 127.0.0.1 einfach die IP oder den HOSTNAMEN des DB-Servers angeben. Und statt dbname eben der Name der Datenbankauf dem Server.


----------



## mr.freeze (15. Okt 2007)

mein Server heißt leider so RE2001/SQLEXPRESS

habe es auch schon mit localhost probiert, ging aber auch nicht!

kann es sein, dass der Treiber nicht für die Express-Version geschrieben ist?


----------



## maki (15. Okt 2007)

> mein Server heißt leider so RE2001/SQLEXPRESS


Das sagtest du bereits, aber wie heisst die DB (Schema)?

Ist der TCP/IP Port des Servers aktiviert?
Bei der Standard Installation des MS SQL 2005 Servers ist der *natürlich* deaktiviert....

Den Server Konfiguration Manager öffnen, dann:
SQL Native Client -> Cientprotokolle -> TCP/IP


----------



## tuxedo (15. Okt 2007)

Der Rechner hat sicher nicht "RE2001/SQLEXPRESS" als Hostname. Das ist irgend nen Windows-Krempel, aber kein Hostname im Sinne von TCP/IP<->DNS

Welcher Fehler kommt denn bei 127.0.0.1 ?

- Alex


----------



## mr.freeze (15. Okt 2007)

jdbc:sqlserver://localhost:1433;databaseName=Adressverwalung;integratedSecurity=true;User=sa;Password=dbms
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:19)


TCP/IP ist aktiviert habe nachgeschaut!

Die Datenbank läuft auch korrekt, ich kann über ein anderes Programm (c#) darauf zugreifen!


----------



## maki (15. Okt 2007)

> TCP/IP ist aktiviert habe nachgeschaut!



Hast du es mal mit telnet probiert?
Wie gesagt, wenn du es nicht umgestellt hast, dann ist es immer noch deaktiviert.


----------



## mr.freeze (15. Okt 2007)

ich habe es nicht umgestellt!

aber ich gehe mal davon aus, dass es aktiviert ist, wenn es dort steht! 

mit telnet habe ich nichts gemacht! wüsste nich wie  :roll:


----------



## maki (15. Okt 2007)

Vorrausgestzt das telnet installiert ist:

```
c:\>telnet localhost 1433
```
Danach weist du sofort, ob der port offen ist oder nicht...


----------



## mr.freeze (15. Okt 2007)

L:\>telnet localhost 1433
Verbindungsaufbau zu localhost...Es konnte keine Verb
ellt werden, auf Port 1433: Verbinden fehlgeschlagen


Habe tcp/ip bei Sql configuration manager , protokolle für sqlexpress aktiviert.
es geht aber immer noch nicht![/img]


----------



## tuxedo (15. Okt 2007)

Zeig doch mal die für C# notwendige Verbindungs-URL .. vielleicht lässt sich daraus etwas mehr Info ziehen.

- Alex


----------



## mr.freeze (18. Okt 2007)

sorry, hatte urlaub!


string connection_string = "Data Source=RE2001\\SQLExpress;Initial Catalog=Adressverwalung;Persist Security Info=True;User ID=sa;Password=dbms";


----------



## mr.freeze (19. Okt 2007)

hatte einen anderen port! 

jetzt funktioniert es

String connectionUrl = "jdbc:sqlserver://RE2001\\SQLEXPRESS:3202;"       + "databaseName=Adressverwalung;user=sa;password=dbms";


----------

