最近使用SQLServer 2017数据库进行开发,在用Java代码连接数据库的时候遇到一个问题,应该是个常见的问题了。在网上找了很多方法都不能解决,终于通过很多次测试解决掉了。这里将解决方案记录一下,亲测有效!!!
出现的问题是:
com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.plusoft.util.SqlHelper.getConnection(SqlHelper.java:29) at com.plusoft.util.SqlHelper.query(SqlHelper.java:63) at com.plusoft.util.SqlHelper.queryPage(SqlHelper.java:107) at com.plusoft.dao.EmployeeDao.search(EmployeeDao.java:110) at com.plusoft.dao.EmployeeDao.search(EmployeeDao.java:92) at com.plusoft.service.EmployeeService.searchEmployees(EmployeeService.java:45) at com.plusoft.service.EmployeeService.searchEmployeesResult(EmployeeService.java:65) at com.plusoft.web.AjaxService.SearchEmployees(AjaxService.java:36) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
当然异常比这里展示的多,不过看第一行就知道错误了。
解决方案:
(1)打开SQL Server Configuration Manager,点击SQL Server 网络配置前面的三角号,选择SQLEXPRESS协议,查看TCP/IP的状态是否是已启用,如果是已禁用,则右键点击TCP/IP选项,选择启用,如下图所示:
(2)然后右键点击TCP/IP选项,选择属性,选择IP地址,拉到最下面,可以看到IPAll,TCP端口填写为1433,点击确定。
(3)然后选择SQL Navite Client 10.0配置下的客户端协议,在这里保证TCP/IP的状态为已启用,如下图所示:
右键点击TCP/IP,选择属性,可以看到这里默认端口也是1433。如下图所示:
(4)最后要重启服务才可以保证修改生效,选择SQL Server服务下的SQL Server ,右键选择重新启动,重启服务如下图所示:
一定要重启服务才可生效!
一定要重启服务才可生效!
一定要重启服务才可生效!
(重要的事说三遍)
(5)到此,问题解决。
以上是我的总结,希望对遇到同样问题的朋友们有帮助。