linux/mac用jdbc连接SqlServer的坑
linux方案一
报错信息:
com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "The server selected protocol version TLS10 is not accepted by client preferences [TLS12]". ClientConnectionId:0da7423a-88dc-4c32-99dc-9a3bf11bd92a at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:3206) at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1916) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2760) at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2418) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:2265) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1291) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:881) at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:118) at com.alibaba.druid.filter.FilterAdapter.connection_connect(FilterAdapter.java:764) at com.alibaba.druid.filter.FilterEventAdapter.connection_connect(FilterEventAdapter.java:33) at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:112) at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:232) at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:112)
TLSv1与安全相关,解决,
找到java安装目录的安全配置,比如/usr/java/jdk1.8.0_333-amd64/jre/lib/security/java.security
将以下字符串删除:
TLSv1, TLSv1.1重启应用即可。可能mac下也可这么解决,未实验。
mac方案二
驱动问题是最大问题,以下pom.xml依赖的都不行:
<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>9.2.1.jre8</version> </dependency> <dependency> <groupId>net.sourceforge.jtds</groupId> <artifactId>jtds</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>jtds</groupId> <artifactId>jtds</artifactId> <version>1.2</version> </dependency>
怎么行?我试验两种情况可以:
方法一、换jtds1.2的驱动。
我用razor可以连到sqlserver,于是查看他的jtds1.2.jar。哈有1.4MB,和我上面pom.xml里用的jtds1.2.jar的200多K根本不是同一个。
那么我用他的jar,不用pom依赖的,就正常了。
方法二、发现pom.xml引用的jtds,虽然idea运行不起来,但可以在mvn package后 使用java -jar正常使用。
经过前面的步骤,再使用idea启动,居然又可以了。。。无语。
今天mac又连不上sql server2012了,报:
2022-06-20 11:18:44.812 ERROR 796 --- [Druid-ConnectionPool-Create-1684099096] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:sqlserver://192.168.xx.xx;DatabaseName=xx, errorCode 0, state 08S01 com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 连接到主机 192.168.xx.xx 的 TCP/IP 连接失败。错误:“Can't connect to SOCKS proxy:Connection refused。请验证连接属性。确保 SQL Server 的实例正在主机上运行,且在此端口接受 TCP/IP 连接,还要确保防火墙没有阻止到此端口的 TCP 连接。”。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:234)
于是,我装了个win10虚拟机,再安装了个sql server的客户端。
https://docs.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms?redirectedfrom=MSDN&view=sql-server-ver16
再打开Azure Data Studio,好了,一切妥妥的。
注意,异常时的"SOCKS proxy",他么走代理了。
相关阅读
评论:
↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑