Datenbank zugreifen

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.

Java:
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();
            }
      
    }

    }
    }
 
K

kneitzel

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/sql/database-engine/configure-windows/configure-a-server-to-listen-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 ...)
 
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/sql/database-engine/configure-windows/configure-a-server-to-listen-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 ...)
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.
 
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.
Java:
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.
 
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.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben