Я тестирую образец кода Java для подключения к базе данных MS SQL Server и получения некоторых данных. Код работает нормально, когда я выполняю его в той же системе, где размещен SQL сервер, но не может подключиться, когда я выполняю ту же программу из другой системы через VPN .
Вот ошибка, которую я получаю:
com.microsoft.sqlserver.jdb c .SQLServerException: не удалось подключиться к узлу SQLServerHost.Domain.com с именем экземпляра myInstance. Ошибка: «java. net .SocketTimeoutException: время ожидания истекло». Проверьте имена серверов и экземпляров и убедитесь, что ни один брандмауэр не блокирует UDP-трафик c на порт 1434.
В системе, где SQL Сервер запущен и работает:
- Службы: SQL Браузер сервера, SQL Сервер (myInstance) и SQL Агент сервера (myInstance) работают.
- На SQL сервере Configuration Manager -> SQL Конфигурация сети сервера -> Протоколы для myInstance : a. TCP / IP включен. б. IPALL: порт TCP Dynami c установлен на пусто , а порт TCP установлен на 1433 . c. IP6, где указан IP-адрес домена: для порта TCP Dynamics установлено значение пусто , а для порта TCP установлено значение 1433 .
- Добавлены правила брандмауэра для входящего подключения к: а. Разрешить подключения к порту 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. Однако этот параметр также не помог.
Спасибо