Мой сервер SQL Server использует динамический порт TCP, например, 52358. Я могу выполнить запрос JDBC без каких-либо проблем, если я указал номер порта 52358 в строке подключения URL JDBC DB, то есть
jdbc:sqlserver://serverName:52358;databaseName=myDB
Однако, поскольку это динамический порт, сервер SQL может выбрать другой порт, если этот порт (52358) станет недоступным после следующей перезагрузки сервера SQL.
Так, как лучше всего настроить URL моей БД в строке подключения?
Подход, который я пробовал :
Пропуск номера порта и использование только имени экземпляра, т. Е.
jdbc:sqlserver://serverName;databaseName=myDB
Это нене работаетКстати, служба браузера sql server уже включена.
Решение найдено (спасибо Горду Томпсону). полная форма URL-адреса БД:
jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
, где portNumber или instanceName могут использоваться для подключения к serverName.Однако,
Если используются и portNumber, и instanceName, то portNumber будет иметь приоритет, а instanceName будет игнорироваться.
Следовательно, для случая динамического порта:мы должны использовать только instanceName для соединения и поддерживать работоспособность службы обозревателя SQL (SQL Server предоставляет службу обозревателя SQL Server для мониторинга портов и направления входящих подключений к текущему порту для этого экземпляра).Таким образом, в моем случае, правильная форма :
jdbc:sqlserver://serverName\instanceName;databaseName=myDB
Кроме того, мы должны помнить, что
Для оптимальной производительности соединения, вы должныустановите номер порта при подключении к именованному экземпляру.Это позволит избежать обратной передачи на сервер для определения номера порта
Тогда для этого потребуется статический номер порта.