Błąd połączenia JDBC, błąd: połączenie TCP / IP z hostem nie powiodło się

85

Chcę połączyć plik klasy Java z serwerem SQL 2012. Zalogowałem się z uwierzytelnianiem serwera SQL. Ale otrzymuję błąd w łączności.

BŁĄD: Połączenie TCP / IP z hostem 127.0.0.1, port 1433 nie powiodło się. Błąd: „Odmowa połączenia: połącz. Sprawdź właściwości połączenia. Upewnij się, że wystąpienie programu SQL Server jest uruchomione na hoście i akceptuje połączenia TCP / IP na porcie. Upewnij się, że połączenia TCP do portu nie są blokowane przez zaporę ogniową) . ”.

Mój kod ---

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");  //1. Register your driver
//2. get the connection object
//Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost;databaseName=aysha","sa","admin");
Connection con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;databaseName=aysha","user=sa","password=admin");
 //"jdbc:sqlserver://127.0.0.1:1433; Instance=SQL2008;" +       "databaseName=MB;user=sa;password=123;";
//Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=aysha","sa" , "password");
//3. Prepare a statement
Statement stmt = con.createStatement();
//4. Write the query`
String sql = "Select * from employee";
//5. Execute the statement and 
ResultSet rs = stmt.executeQuery(sql);
//6. Process the result set

while (rs.next())
{
    System.out.println(rs.getInt(1));
}
Aysha Nijhawan
źródło
Lokalny komputer odmówił zezwolenia na połączenie z portem 1433. Jest to prawdopodobnie problem z zaporą. Upewnij się również, że w porcie jest coś, co nasłuchuje
MadProgrammer,

Odpowiedzi:

208
  1. Otwórz Menedżera konfiguracji programu SQL Server, a następnie rozwiń węzeł Konfiguracja sieci programu SQL Server 2012.
  2. Kliknij Protokoły dla InstanceName, a następnie upewnij się, że protokół TCP / IP jest włączony w prawym panelu i kliknij dwukrotnie TCP / IP.
  3. Na karcie Protokół zwróć uwagę na wartość elementu Listen All.
  4. Kliknij kartę IP Addresses: Jeśli wartość Listen All ma wartość Yes, numer portu TCP / IP dla tego wystąpienia programu SQL Server 2012 jest wartością pozycji TCP Dynamic Ports w obszarze IPAll. Jeśli wartość Listen All to no, numer portu TCP / IP dla tego wystąpienia programu SQL Server 2012 jest wartością elementu TCP Dynamic Ports dla określonego adresu IP.
  5. Upewnij się, że port TCP to 1433.
  6. Kliknij OK.

Jeśli masz więcej pytań, daj mi znać.

Dzięki.

książę
źródło
15
I nie zapomnij ponownie uruchomić instancji SQL po wprowadzeniu zmian.
JimGoods
16
Zrestartuj instancję SQL w następujący sposób: w „SQL Server Configuration Manager” -> „SQL Server 2012 Services” kliknij prawym przyciskiem myszy „SQL Server” i wybierz „Uruchom ponownie”.
Deweloper Marius Žilėnas
10
Zwróć uwagę na Upewnij się, że port TCP to 1433 w IPAII.
Deweloper Marius Žilėnas
Lub zmień numer portu w swojej aplikacji na wartość TCP Dynamic Ports w IPAII. Właśnie to zrobiłem, aby to działało, ponieważ nie mogę zmienić wartości.
AlieneilA
Upewnij się również, że uwierzytelnianie serwera sql jest włączone: Przejdź do Właściwości wybranego serwera (z menu prawego przycisku myszy). Teraz przejdź do strony Bezpieczeństwo iw obszarze Uwierzytelnianie serwera wybierz opcję Tryb uwierzytelniania serwera SQL i okna. Teraz rozwiń Bezpieczeństwo> Loginy i kliknij prawym przyciskiem myszy nazwę serwera i wybierz Właściwości. ... Kliknij OK i zrestartuj serwer SQL ( nucleustechnologies.com/blog/… )
Patrick Koorevaar,
111

Łatwe rozwiązanie

Przejdź do Start -> Wszystkie programy -> Microsoft SQL Server 2012 -> Narzędzie konfiguracyjne -> Kliknij Menedżer konfiguracji programu SQL Server -> Rozwiń Konfiguracja sieci SQL Server -> Protokół -> Włącz prawo TCP / IP

Kliknij dwukrotnie TCP / IP i przejdź do Adresy IP Dotknij i umieść port 1433 pod portem TCP.

wprowadź opis obrazu tutaj

Md. Naushad Alam
źródło
2
Po wykonaniu tych czynności musiałem zatrzymać i ponownie uruchomić serwer, aby działał. Dzięki!
bluefox
16

Błąd jest oczywisty:

  • Sprawdź, czy Twój serwer SQL faktycznie działa
  • Sprawdź, czy nazwa hosta serwera SQL, nazwa użytkownika i hasło są poprawne
  • Sprawdź, czy nie ma reguły zapory blokującej połączenie TCP z portem 1433
  • Sprawdź, czy host jest rzeczywiście osiągalny

Dobrym sprawdzianem, z którego często korzystam, jest użycie telnetu, np. W wierszu poleceń systemu Windows:

telnet 127.0.0.1 1433

Jeśli pojawi się pusty ekran, oznacza to, że połączenie sieciowe zostało pomyślnie nawiązane i nie jest to problem z siecią. Jeśli pojawi się komunikat „Nie można otworzyć połączenia z hostem”, oznacza to problem z siecią

gerrytan
źródło
1
Próbowałem telnet 127.0.01 1433, wyświetla się komunikat Łączenie się z 127.0.01 `nie można otworzyć połączenia z hostem lub połączenie z portem 1433 nie powiodło się
Aysha Nijhawan
1
Dlatego jest bardzo prawdopodobne, że nie zainstalowałeś serwera, serwer nie działa lub masz zaporę ogniową uniemożliwiającą połączenie. Zwykle nie jest to problem z programem Java
gerrytan
11

Przejdź do Start-> Wszystkie programy-> Microsoft SQL Server 2012-> Narzędzie konfiguracyjne -> Kliknij SQL Server Configuration Manager. wprowadź opis obrazu tutaj

Jeśli widzisz, że stan przeglądarki SQL Server / SQL Server jest zatrzymany, kliknij prawym przyciskiem myszy na SQL Server / SQL Server Browser i kliknij Start. W niektórych przypadkach powyższy stan może zostać zatrzymany, mimo przypisania połączenia TCP do portu 1433.

Abdur Rahman
źródło
bardzo mi pomogło. Przeglądarka została wyłączona, co jest kluczowym elementem, który musi być uruchomiony, aby nawiązywać połączenia z klientami.
Mayur,
3

Jak mówi błąd, musisz upewnić się, że twój serwer sql działa i nasłuchuje na porcie 1433. Jeśli serwer jest uruchomiony, musisz sprawdzić, czy jest jakaś reguła zapory sieciowa odrzucająca połączenie na porcie 1433.

Oto polecenia, które mogą być przydatne do rozwiązywania problemów:

  1. Służy netstat -ado sprawdzania, czy serwer sql nasłuchuje na żądanym porcie
  2. Jak wspomniano w odpowiedzi gerrytan, możesz spróbować zrobić to telnetna hoście i porcie
Juned Ahsan
źródło
Myślę, że OP używa serwera sql, a nie mysql
SpringLearner
@AyshaNijhawan Czy sprawdziłeś port, na którym nasłuchuje? Spróbuj także połączyć się z serwerem sql za pomocą wiersza poleceń lub klienta sql, używając tego samego adresu IP / portu i poświadczeń.
Juned Ahsan
Port to 1433 i próbowałem go użyć, umieszczając go w ciągu połączenia. Nazwane potoki, pamięć i TCP / IP są
włączone w
0

ważne:
po wszelkich zmianach lub nowych ustawieniach należy ponownie uruchomić SQLSERVERusługę. biegnij services.mscdalejWindows

Mahdi
źródło
0

Jeśli używasz nazwanej instancji, port, którego używasz, to prawdopodobnie 1434 zamiast 1433, więc sprawdź to również za pomocą wspomnianego wcześniej telnetu lub netstat.

Toshihiko
źródło
0

Otwórz folder% windir% \ System32 i znajdź SQLServerManagerXX.msc

Na przykład:

C: \ Windows \ System32 \ SQLServerManager14.msc

Przejdź do ustawień protokołów, a następnie włącz domyślnie port TCP / IP to 1433

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

Ali Karaca
źródło