No me podía conectar desde Java ejecutándose en Windows 10 a mi Sql Server ejecutándose en localhost a pesar de poner todos los parámetros correctos como indican en esta web: https://www.codejava.net/java-se/jdbc/connect-to-microsoft-sql-server-via-jdbc
Lo peor es que se trata de una instalación fresca de Sql Server, además el SQL Server Management Studio no tiene problemas en conectarse. Pero al intentar conectarme desde una aplicación en Java, siempre me arrojaba la siguiente excepción:
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.
El error también puede decir que se ha agotado el tiempo de espera.
Luego de comprobar que no fuera el firewall (activándolo y desactivándolo), reinicié los servicios que aparecen listados en Services.msc, eso tampoco resolvió el problema:
En el caso de Sql Server Express, no interesa si el SQL Server Agent no se ejecuta, por ahí leí que la versión Express no soporta el SQL Server Agent, de modo que se detiene apenas se inicia. Esto no interesa.
Pasa saber qué etá pasando, se debe revisar si hay alguna aplicación escuchando el puerto 1433; para esto se debe abrir el Windows Powershell o el cmd e ingresar el comando netstat -a que listará todos los puertos en escucha:
Primero se debe abrir el SQL Server Configuration Manager, si no se tiene el acceso directo, hay que ir a Inicio y ejecutar el archivo respectivo dado en este enlace https://docs.microsoft.com/en-us/sql/relational-databases/sql-server-configuration-manager?view=sql-server-ver15
Esta es la lista para cada versión de SQL Server:
Version | Path |
---|---|
SQL Server 2019 | C:\Windows\SysWOW64\SQLServerManager15.msc |
SQL Server 2017 | C:\Windows\SysWOW64\SQLServerManager14.msc |
SQL Server 2016 | C:\Windows\SysWOW64\SQLServerManager13.msc |
SQL Server 2014 (12.x) | C:\Windows\SysWOW64\SQLServerManager12.msc |
SQL Server 2012 (11.x) | C:\Windows\SysWOW64\SQLServerManager11.msc |
No hay que poner la ruta completa, basta el nombre del archivo msc respectivo. En mi caso es SQLServerManager14.msc
A continuación se debe ir a Protocolos de SQLEXPRESS (el nombre de mi Instancia) y hacer click derecho a TCP/IP->Propiedades:
Las opciones que se deben configurar son IPV3 e IPV4, se debe borrar el cero en TCP Dinamic Ports y poner Enabled en Yes, la opción TCP Port se deba en blanco:
La última opción es IPALL donde se debe ingresar el puerto 1433 en TCP Port:
Luego se deben reiniciar todos los servicios de SQL Server en Services.msc. Se debe comprobar que el puerto 1433 aparece listado al ejecutar el comando netstat -a:
Esto me resolvió el problema de conexión desde Java.
No hay comentarios:
Publicar un comentario