Ошибка подключения JDBC, ошибка: сбой подключения TCP / IP к хосту


85

Я хочу подключить файл класса Java к SQL Server 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. Щелкните Протоколы для имени экземпляра, затем убедитесь, что TCP / IP включен на правой панели, и дважды щелкните TCP / IP.
  3. На вкладке «Протокол» обратите внимание на значение параметра «Слушать все».
  4. Щелкните вкладку «IP-адреса»: если для параметра «Слушать все» установлено значение «Да», то номер порта TCP / IP для этого экземпляра SQL Server 2012 является значением элемента «Динамические порты TCP» в разделе «IPAll». Если значение Listen All равно no, номер порта TCP / IP для этого экземпляра SQL Server 2012 является значением элемента TCP Dynamic Ports для определенного IP-адреса.
  5. Убедитесь, что TCP-порт 1433.
  6. Щелкните ОК.

Если есть еще вопросы, дайте мне знать.

Благодарю.


15
И не забудьте перезапустить экземпляр SQL после внесения изменений.
JimGoods

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

10
Обратите внимание на Убедитесь, что TCP-порт 1433 в IPAII.
Разработчик Мариус Жиленас,

Или измените номер порта в своем приложении на значение динамических портов TCP в IPAII. Вот что я сделал, чтобы это заработало, потому что я не могу изменить значение.
AlieneilA

Также убедитесь, что аутентификация сервера sql включена: перейдите в Свойства выбранного сервера (из меню, вызываемого правой кнопкой мыши). Теперь перейдите на страницу «Безопасность» и в разделе «Проверка подлинности сервера» выберите параметр «SQL Server and Window Authentication mode». Теперь разверните Security> Logins, щелкните правой кнопкой мыши имя сервера и выберите Properties. ... Нажмите ОК и перезапустите SQL-сервер ( nucleustechnologies.com/blog/… )
Патрик Куреваар

111

Простое решение

Добрался до Пуск -> Все программы -> Microsoft SQL Server 2012 -> Инструмент настройки -> Щелкните Диспетчер конфигурации SQL Server -> Разверните Сетевая конфигурация SQL Server -> Протокол -> Правое поле Включить TCP / IP

Дважды щелкните TCP / IP и перейдите к IP-адресам. Нажмите и поместите порт 1433 в порт TCP.

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


2
После выполнения этих шагов мне пришлось остановить и перезапустить сервер, чтобы он заработал. Благодаря!
bluefox

16

Ошибка не требует пояснений:

  • Проверьте, действительно ли ваш SQL-сервер запущен и работает
  • Проверьте правильность имени хоста 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. Как упоминал Герритан в ответе, вы можете попробовать сделать это telnetна хосте и порту

Я думаю, что OP использует sql-сервер, а не mysql
SpringLearner

@AyshaNijhawan Вы проверили порт, который он слушает? Также попробуйте подключиться к серверу sql через командную строку или клиент sql, используя тот же IP / порт и учетные данные.
Juned Ahsan

Порт 1433, и я попытался использовать его, указав его в строке подключения. Именованные каналы, память и TCP / IP включены в конфигурации SQL Server N / W -> Протоколы для MSSQLSERVER
Aysha Nijhawan

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.