Помилка підключення JDBC, помилка: Помилка підключення TCP / IP до хосту


85

Я хочу зв’язати файл класу Java із SQL сервером 2012. Я ввійшов у систему за допомогою автентифікації сервера SQL. Але я отримую помилку у зв'язку.

ПОМИЛКА: Помилка підключення TCP / IP до хосту 127.0.0.1, порт 1433. Помилка: "Підключення відхилено: підключення. Перевірте властивості підключення. Переконайтеся, що екземпляр SQL Server працює на хості та приймає TCP / IP-з’єднання в порту. Переконайтеся, що TCP-з’єднання з портом не заблоковано брандмауером . ".

Мій код ---

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));
}

Місцевий комп’ютер відмовив у підключенні до порту 1433. Це, ймовірно, проблема брандмауера. Також переконайтеся, що в порту насправді щось прослуховується
MadProgrammer

Відповіді:


208
  1. Відкрийте диспетчер конфігурації SQL Server, а потім розгорніть конфігурацію мережі SQL Server 2012.
  2. Клацніть Протоколи для InstanceName, а потім переконайтеся, що TCP / IP увімкнено на правій панелі та двічі клацніть TCP / IP.
  3. На вкладці Протокол зверніть увагу на значення пункту Прослухати всіх.
  4. Клацніть на вкладці IP-адреси: Якщо значення "Прослухати все" так, номер порту TCP / IP для цього екземпляра SQL Server 2012 є значенням елемента TCP Dynamic Ports під IPAll. Якщо значення "Прослухати все" відсутнє, номер порту TCP / IP для цього примірника SQL Server 2012 є значенням елемента динамічних портів TCP для певної IP-адреси.
  5. Переконайтесь, що TCP-порт - 1433.
  6. Клацніть OK.

Якщо є ще якісь запитання, будь ласка, дайте мені знати.

Дякую.


15
І не забудьте перезапустити екземпляр SQL після внесення змін.
JimGoods,

16
Перезапустіть екземпляр SQL наступним чином: у "Диспетчері конфігурацій SQL Server" -> "Служби SQL Server 2012" клацніть правою кнопкою миші на "SQL Server" і виберіть "Перезапустити".
Розробник Маріус Жиленас

10
Зверніть увагу, переконайтесь, що TCP-порт 1433 згідно IPAII.
Розробник Маріус Жиленас

Або змініть номер порту у вашому додатку на значення динамічних портів TCP за IPAII. Це те, що я зробив, щоб це працювало, тому що я не можу змінити значення.
AlieneilA

Також переконайтесь, що автентифікація сервера sql увімкнена: Перейдіть до Властивостей вибраного сервера (з меню правої кнопки миші). Тепер перейдіть на сторінку Безпека і в розділі Аутентифікація сервера виберіть параметр SQL Server та Режим автентифікації вікна. Тепер розгорніть «Безпека»> «Входи» та клацніть правою кнопкою миші ім’я сервера та виберіть «Властивості». ... Клацніть OK і перезапустіть сервер SQL ( nucleustechnologies.com/blog/… )
Патрік Куреваар

111

Просте рішення

Початок -> Усі програми -> Microsoft SQL Server 2012 -> Інструмент конфігурації -> Клацніть диспетчер конфігурації SQL Server -> Розгорніть конфігурацію мережі SQL Server -> Протокол -> Увімкнути правий вікно TCP / IP

Двічі клацніть на TCP / IP і перейдіть до IP Adresses Tap and Put port 1433 under TCP port.

введіть тут опис зображення


2
Після виконання цих кроків мені довелося зупинити та перезапустити сервер, щоб він працював. Дякую!
bluefox

16

Помилка сама собою пояснюється:

  • Перевірте, чи ваш SQL-сервер насправді працює і працює
  • Перевірте правильність імені хосту сервера, імені користувача та пароля
  • Перевірте, чи не існує правила брандмауера, що блокує TCP-з'єднання з портом 1433
  • Перевірте, чи хост насправді доступний

Хороша перевірка, яку я часто використовую, це використання telnet, наприклад, під час запуску командного рядка Windows:

telnet 127.0.0.1 1433

Якщо ви отримуєте порожній екран, це означає, що підключення до мережі успішно встановлено, і це не проблема мережі. Якщо ви отримуєте повідомлення "Не вдалося відкрити з'єднання з хостом", це проблема мережі


1
Я спробував telnet 127.0.01 1433, там написано Підключення до 127.0.01 `Не вдалося відкрити з'єднання з хостом або підключенням порту 1433 не вдалося
Айша Ніджхаван

1
Отже, дуже ймовірно, що ви не встановили сервер, сервер не працює або у вас є брандмауер, що перешкоджає підключенню. Зазвичай це не проблема Java-програми
gerrytan

11

Перейдіть до меню Пуск-> Усі програми-> Microsoft SQL Server 2012-> Інструмент конфігурації -> Клацніть менеджер конфігурації SQL Server. введіть тут опис зображення

Якщо ви бачите, що стан SQL Server / браузера SQL Server "зупинено". Клацніть правою кнопкою миші на браузері SQL Server / SQL Server і натисніть кнопку "Пуск" У деяких випадках вищезгаданий стан може зупинитися, хоча призначено TCP-з'єднання з портом 1433.


мені дуже допомогло. Браузер вимкнено, що є ключовим компонентом, який повинен бути запущений для встановлення клієнтських з'єднань.
Mayur

3

Як повідомляє помилка, вам потрібно переконатися, що ваш сервер sql працює і прослуховує порт 1433. Якщо сервер запущений, вам потрібно перевірити, чи існує якесь правило брандмауера, яке відхиляє з'єднання через порт 1433.

Ось команди, які можуть бути корисними для усунення несправностей:

  1. Використовуйте, netstat -aщоб перевірити, чи прослуховує сервер sql потрібний порт
  2. Як згадано у відповіді gerrytan, ви можете спробувати зробити це telnetна хості та порту

Я думаю, що OP використовує сервер sql, а не mysql
SpringLearner

@AyshaNijhawan Ви перевірили порт, який він слухає? Також спробуйте підключитися до сервера sql за допомогою командного рядка або клієнта sql, використовуючи той самий ip / port та облікові дані.
Juned Ahsan

Порт 1433, і я спробував використати, поставивши його в рядок з'єднання. Іменовані канали, пам’ять і TCP / IP
увімкнено в

0

важливо:
після будь-яких змін або нових налаштувань ви повинні перезапустити SQLSERVERслужбу. бігти services.mscдаліWindows


0

Якщо ви використовуєте іменований екземпляр, порт, який ви використовуєте, швидше за все, 1434, а не 1433, тому, будь ласка, перевірте це, використовуючи telnet або netstat, також згадані вище.


0

Відкрийте папку% windir% \ System32 і знайдіть SQLServerManagerXX.msc

Наприклад:

C: \ Windows \ System32 \ SQLServerManager14.msc

Перейдіть до налаштувань протоколів, а потім увімкніть порт TCP / IP за замовчуванням 1433

введіть тут опис зображення

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.