JDB C соединение с удаленным MS SQLServer не работает - PullRequest
1 голос
/ 04 августа 2020

Я тестирую образец кода Java для подключения к базе данных MS SQL Server и получения некоторых данных. Код работает нормально, когда я выполняю его в той же системе, где размещен SQL сервер, но не может подключиться, когда я выполняю ту же программу из другой системы через VPN .

Вот ошибка, которую я получаю:

com.microsoft.sqlserver.jdb c .SQLServerException: не удалось подключиться к узлу SQLServerHost.Domain.com с именем экземпляра myInstance. Ошибка: «java. net .SocketTimeoutException: время ожидания истекло». Проверьте имена серверов и экземпляров и убедитесь, что ни один брандмауэр не блокирует UDP-трафик c на порт 1434.

В системе, где SQL Сервер запущен и работает:

  1. Службы: SQL Браузер сервера, SQL Сервер (myInstance) и SQL Агент сервера (myInstance) работают.
  2. На SQL сервере Configuration Manager -> SQL Конфигурация сети сервера -> Протоколы для myInstance : a. TCP / IP включен. б. IPALL: порт TCP Dynami c установлен на пусто , а порт TCP установлен на 1433 . c. IP6, где указан IP-адрес домена: для порта TCP Dynamics установлено значение пусто , а для порта TCP установлено значение 1433 .
  3. Добавлены правила брандмауэра для входящего подключения к: а. Разрешить подключения к порту 1433 . б. Разрешить подключения к Program D: \ Program Files \ Microsoft SQL Server \ MSSQL12.MyInstance \ MSSQL \ Binn \ Sqlservr.exe .

Вот пример кода:

import java.sql.*;

public class FirstExample {
 // JDBC driver name and database URL
 static final String JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";  
 static final String DB_URL = "jdbc:sqlserver://SQLServerHost.Domain.COM\\myInstance;databaseName=myDatabase";

 //  Database credentials
 static final String USER = "myuser";
 static final String PASS = "mypwd";
 
 public static void main(String[] args) {
 Connection conn = null;
 Statement stmt = null;
 try{
    Class.forName(JDBC_DRIVER);

    System.out.println("Connecting to database...");
    conn = DriverManager.getConnection(DB_URL,USER,PASS);

    /*Error: "java.net.SocketTimeoutException: Receive timed out" is reported at above getConnection call*/
..............
..............
}//FirstExample 

ms sql jdb c jar был использован: ms sql -jdb c -7.0.0.jre8.jar.

EDIT 1: В системе, где размещен сервер SQL, добавлены правила брандмауэра для входящего подключения, чтобы разрешить UDP-порт 1434. Однако этот параметр также не помог.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...