我使用 jdk 1.8.371 和 spring boot 2.1.5 连接 MS SQL Server 2008 数据库。我收到错误“SQL Server 未返回响应。连接已关闭”。我没有从数据库获取数据,下面是代码
Databse detailsjdbcUrl: jdbc:sqlserver://IPAddress:1433;databaseName=MyDatabase;integratedSecurity=false;encrypt=true;trustServerCertificate=true;sslProtocol=TLSv1
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
Class.forName(dbDriver);
try (Connection conn = DriverManager.getConnection(dbUrl, dbUsername, dbPassword)) {
try (PreparedStatement cStmt = conn.prepareCall(dbQuery)) {
try (ResultSet dbSet = cStmt.executeQuery()) {
while (dbSet.next()) {
TransId = dbSet.getString("TRANS_ID");
}
}
}
}
我的询问:
Select TRANS_ID From Transactionlog;
我在 java.security 文件中禁用了 jdk.tls.disabledAlgorithms=None ,之后我能够连接数据库但无法获取数据。我也设置了system.setProperties但无法获取数据
MS SQL Server 2008 仅支持 TLSv1.0。而jdk 1.8.371默认支持TLSv1.2和TLSv1.3。为了解决这个问题,我在路径 jdk-1.8\jre\lib\security
上的 java.security 文件中更改了以下 2 个属性jdk.certpath.disabledAlgorithms=None
jdk.tls.disabledAlgorithms=None
通过进行上述更改,我能够从 MS SQL Server 2008 连接并获取数据