Linux_sqlcmd或者是Cloudquery连接SQLSERVER2012的问题解决

发布时间 2023-11-26 18:53:06作者: 济南小老虎

Linux_sqlcmd或者是Cloudquery连接SQLSERVER2012的问题解决


背景

最近想使用shell脚本给SQLServer数据库插入数据,但是发现了报错
同时进行CLoudquery连接SQLServer数据库时也出现了异常.
作为笔记记录一下问题和解决方法

sqlcmd的问题现象

sqlcmd的提示信息

第一: 安装
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo

注意 如果是银河麒麟V10 需要选用 rhel/8 

yum install sqlcmd -y 安装

第二: 连接数据库
sqlcmd -h  打开帮助然后使用命令进行连接

Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : SSL Provider: [error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol].
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Client unable to establish connection.

这个问题的解决办法是
SQLSERVER2012 升级SP2或者是SP4

后者是SQLSERVER2014升级到SP2或者是更高的版本

第三: 会出现新的错误:
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : SSL Provider: [error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small].
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Client unable to establish connection.

解决这个问题的办法为,降级linux的安装级别:
update-crypto-policies --set LEGACY

连接效果为:
[root@auto109 ~]# sqlcmd -S 10.xxx.xx.xx -U gscloudmss
Password:
1>

Cloudquery的现象

Cloudquery 是使用的jdbc
sqlcmd 是使用的 odbc
稍微有所区别
他的报错信息为:

创建连接失败,请检查连接配置信息: 
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:41106641-48eb-4bd5-963d-6cbc3d3c6fdb

需要注意 升级了SQLSERVER的service pack包之后问题就可以了.