背景:
- 应用服务器:
基于 Java 的应用程序在 Windows Server 2008 R2 Enterprise 上运行。 此服务器上的 Java 版本是版本 6 更新 32。 JDBC驱动版本:4.0
- 数据库服务器:
数据库服务器最近已从 Windows 2016 升级到 Windows 2019,从 SQL Server 2012 升级到 SQL Server 2016,并且没有 Java在这台服务器上。这是个问题吗??
- 历史:
当我们上次将数据库服务器从 SQL Server 2008 升级到 SQL Server 2012 时,我们采用相同的方法,应用程序运行良好。
但是这次它在应用程序日志中抛出以下错误:
org.jboss.resource.JBossResourceException:无法创建连接; - 嵌套抛出:(com.microsoft.sqlserver.jdbc.SQLServerException:
驱动程序无法使用安全套接字层 (SSL) 加密与 SQL Server 建立安全连接。错误:“SQL Server 未返回响应。连接已关闭。”。)
我们根本没有接触应用服务器,期望当数据库服务器启动时,因为它是相同的服务器名称,它会正常启动备份,但是应用程序失败并出现上述错误。 没有登录失败,因为我们测试了应用程序登录名和密码,它运行良好。
我看了以下内容:
SQL Server JDBC Error on Java 8: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption
但我们似乎无法理解是什么导致了这个问题,因为应用服务器上没有任何变化。
我在这里查看了 JDBC 版本和 SQL Server 矩阵之间的兼容性
https://learn.microsoft.com/en-us/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-server-support-matrix?view=sql-server-2017看起来 JDBC 4.0 可以与 SQL Server 2016 一起使用。
关于可能发生的事情有什么想法吗?
最佳答案
尝试添加“trustServerCertificate=true;”到连接字符串示例: jdbc:sqlserver://NEUTRON\SQL2017;user=sa;password=password123;integratedSecurity=false;trustServerCertificate=true;
关于java - SQL Server JDBC 错误 : The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57595772/