JDBC La conexión al servidor SQL dinámico con puertos TCP

Peng:

Mi motor de SQL Server está utilizando el puerto TCP dinámico, por ejemplo, 52358. puedo hacer consulta JDBC sin ningún problema si se especifica el número de puerto 52358 en mi cadena de conexión JDBC URL DB, es decir,

jdbc:sqlserver://serverName:52358;databaseName=myDB

Sin embargo, ya que este es el puerto dinámico, SQL Server podría elegir otro puerto si este puerto (52358) deja de estar disponible después de reiniciar el servidor SQL próxima vez.

Entonces, ¿qué mejor manera de configurar la URL de mi base de datos en la cadena de conexión?


Enfoque que he intentado :

Omitiendo el número de puerto y usando solamente el nombre de la instancia, es decir,

jdbc:sqlserver://serverName;databaseName=myDB

Esto no funciona. Por cierto, el servicio SQL Server Browser ya está habilitado.


Solución encontrada (gracias a Gord Thompson). La forma completa de la base de datos de URL es:

jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]

donde ya sea el portNumber o instanceName pueden usarse para conectarse a serverName. Sin embargo,

Si se utilizan tanto un portNumber y instanceName, la portNumber tendrá prioridad y el instanceName será ignorado.

Por lo tanto, para el caso de puertos dinámicos, debemos utilizar sólo instanceName para la conexión y mantener el servicio Explorador de SQL en ejecución (SQL Server proporciona el Explorador de SQL Server Service , de monitorear los puertos y las conexiones entrantes directas al puerto actual para esa instancia) . Por lo tanto, en mi caso, la forma correcta es:

jdbc:sqlserver://serverName\instanceName;databaseName=myDB

Además, debemos tener en cuenta que

Para obtener un rendimiento óptimo de la conexión, se debe configurar el portNumber cuando se conecta a una instancia con nombre. Esto evitará un viaje de vuelta al servidor para determinar el número de puerto

Entonces esto va a llamar a un número de puerto estático.

Gord Thompson:

Si realmente no puede contar con la constante número de puerto que queda entonces tendrá que conectarse utilizando el nombre de la instancia de SQL Server.

instancia predeterminada:

jdbc:sqlserver://servername\MSSQLSERVER;...

instancia con nombre

jdbc:sqlserver://servername\instancename;...

Por supuesto, esto significa que el servicio Explorador de SQL deben ejecutar en el servidor para el nombre de instancia se puede resolver con el número de puerto real que se utiliza actualmente.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=209675&siteId=1
Recomendado
Clasificación