# Datenbank zugreifen



## chrism120 (25. Sep 2019)

Hallo ich versuche schon lange her eine verbindung mit meiner Datenbank aufzubauen. Leider funktioniert nicht. ich habe die Ports freigegeben und die Drivers auch geladen. aber ich kriege immer folgendes Fehlermelung. Bitte Hilfe...

com.microsoft.sqlserver.jdbc.SQLServerException: Fehler beim Herstellen der TCP/IP-Verbindung mit dem Host 'NB4417', Port 1705. Fehler: 'Connection refused: connect. Überprüfen Sie die Verbindungseigenschaften. Stellen Sie sicher, dass eine SQL Server-Instanz auf dem Host ausgeführt wird und am Port TCP/IP-Verbindungen akzeptiert. Vergewissern Sie sich, dass am Port keine TCP-Verbindungen durch eine Firewall blockiert werden.'.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:234)
    at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:285)
    at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2431)
    at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:656)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2472)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2142)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1993)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1164)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:760)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at Mssql.main(Mssql.java:16)

my code ist Folgendes.


```
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Mssql {

    public static void main(String[] args) {
        Connection conn = null;
        
        try {
 
            String url = "jdbc:sqlserver://chrispc\\sqlexpress";
            String user = "sa";
            String password = "pass";
            conn = DriverManager.getConnection(url, user, password);
            if (conn != null) {
                DatabaseMetaData dm = (DatabaseMetaData) conn.getMetaData();
                System.out.println("Driver name: " + dm.getDriverName());
                System.out.println("Driver version: " + dm.getDriverVersion());
                System.out.println("Product name: " + dm.getDatabaseProductName());
                System.out.println("Product version: " + dm.getDatabaseProductVersion());
            }
 
        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            try {
                if (conn != null && !conn.isClosed()) {
                    conn.close();
                }
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
      
    }

    }
    }
```


----------



## kneitzel (25. Sep 2019)

Also irgendwas passt da nicht und ich sehe aber aus den Informationen nicht, woran das scheitert.

In dem Code gibst Du als System chrispc an. Wieso will er dann auf ein System NB4417 zugreifen?
Und bezüglich des Ports ist auch die Frage, was da überhaupt läuft. Denn SQL Server nutzt normalerweise den Port 1433. Ok, es handelt hier nicht um eine Standard Instanz sondern eine benannte Instanz, die einen Zufalls-Port nimmt. Daher kann es zu dem Port 1705 kommen... Hier ist die genereller Empfehlung von Microsoft, einen festen Port für die Instanz einzurichten:
https://docs.microsoft.com/de-de/sq...n-on-a-specific-tcp-port?view=sql-server-2017 

Aber vielleicht gibst Du uns einfach einmal genauere Informationen, was Du alles gemacht hast. Wie sieht die Topologie bei Dir aus (wo läuft was) und wo hast Du welche Ports wie freigegeben .... Wie hast Du den SQL Server konfiguriert?

(Wieso als Entwickler die Express Edition nutzen? Developer Edition ist frei und Du bekommst sogar alle Enterprise Features mit ...)


----------



## chrism120 (26. Sep 2019)

kneitzel hat gesagt.:


> Also irgendwas passt da nicht und ich sehe aber aus den Informationen nicht, woran das scheitert.
> 
> In dem Code gibst Du als System chrispc an. Wieso will er dann auf ein System NB4417 zugreifen?
> Und bezüglich des Ports ist auch die Frage, was da überhaupt läuft. Denn SQL Server nutzt normalerweise den Port 1433. Ok, es handelt hier nicht um eine Standard Instanz sondern eine benannte Instanz, die einen Zufalls-Port nimmt. Daher kann es zu dem Port 1705 kommen... Hier ist die genereller Empfehlung von Microsoft, einen festen Port für die Instanz einzurichten:
> ...


Hallo, ich bin in einer Unternehmennetzwerk und jeder PC hat einen eigenen Namen. NB4417 ist den von meinem PC und darauf habe ich SQLserver Express eingerichtet. Die Ports 1433 und 1705 wurden auch freigegeben. aber trotzdem kriege ich immer diese Fehlermeldungen. Express wurde mir von meinem Chef empholen.


----------



## Thallius (26. Sep 2019)

Hast du denn einfach mal versucht die Datenbank über ein Admintool anzusprechen?


----------



## chrism120 (26. Sep 2019)

Thallius hat gesagt.:


> Hast du denn einfach mal versucht die Datenbank über ein Admintool anzusprechen?


ja. Habe ich getan


----------



## chrism120 (26. Sep 2019)

Thallius hat gesagt.:


> Hast du denn einfach mal versucht die Datenbank über ein Admintool anzusprechen?


ich habe auch versucht zu überprüfen ob ich den Server erreichen kann aber es geht auch nicht obwohl der Port freigegeben worden ist


----------



## chrism120 (26. Sep 2019)

Youpi ich habe geschafft danke an allen Endlich


----------



## Thallius (26. Sep 2019)

Wäre natuerlich schön wenn du uns sagst was du gemacht hast. Damit kann jemand der das Gleiche Problem haben sollte es hier finden.


----------



## chrism120 (26. Sep 2019)

ok ja wohl


----------



## chrism120 (26. Sep 2019)

erstmals den Port in Firewall freigegeben also ich hab hier denn default port freigegebn (1433). 
zweitens mit SQL Server Konfiguration Manager das Protokolle TCP/IP aktivieren und IP Adresse für meinen Server geben.
Da ich eine ServerAuthentifikation benutzt, habe ich als Username " sa" und Passwort wie bei der Einrichtung eingegen.

```
Connection conn = null;
        
      
 
            String url = "jdbc:sqlserver://Chrispc\\sqlexpress";
            String user = "sa";
            String password = "YFg78h124";
            conn = DriverManager.getConnection(url, user, password);
```

Nicht vergessen die Treiber für Microsoft zu laden.


----------



## M.L. (26. Sep 2019)

Wenn da mal niemand Internes auf die Idee kommt die Zugangsdaten für eigene (sprich: böse) Zwecke zu missbrauchen. Ausserdem sollte ein Passwort -zwecks schwerer Knackbarkeit- mit mehr Sonderzeichen und Stellen versehen werden.


----------

