无法通过SSL错误0x140A90A1的unixODBC驱动程序连接MSSQL Linux

时间:2019-05-10 17:47:14

标签: sql-server linux openssl odbc unixodbc

MSSQL 2017安装在一台SUSE12 SP2 pc上,然后在应用程序pc上安装unixODBC驱动程序,尝试让应用程序在SUSE Linux下与MSSQL 2017对话,但是ODBC api在连接期间报告错误。到目前为止,我做到了 安装msodbcsql17

#  sudo zypper install msodbcsql17 
check configure

# odbcinst -j
unixODBC 2.3.7
DRIVERS............: /etc/unixODBC/odbcinst.ini

SYSTEM DATA SOURCES: /etc/unixODBC/odbc.ini

FILE DATA SOURCES..: /etc/unixODBC/ODBCDataSources

USER DATA SOURCES..: /users/nvh1wa/.odbc.ini

SQLULEN Size.......: 8

SQLLEN Size........: 8

SQLSETPOSIROW Size.: 8

检查odbcinst.ini

#cat /etc/unixODBC/odbcinst.ini
`[ODBC Driver 17 for SQL Server]

Description=Microsoft ODBC Driver 17 for SQL Server

Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.3.so.1.1

UsageCount=1`

检查odbc.ini和odbc.ini是否为空

这是我们与MSSQL服务器连接的代码

`if(!SQL_SUCCEEDED(SQLDriverConnect(handle, NULL, (SQLTCHAR*) 
connect_string.c_str(), SQL_NTS, ConnStrOut, 1024, &cbConnStrOut, 
SQL_DRIVER_NOPROMPT)))){ report error here;}`

哪个报告失败。

这是系统日志中的错误:

ODBC error. SQLSTATE: 08001 Native error: -1 Message: [Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:140A90A1:SSL routines:func(169):reason(161)] Approx SQL was "CONNECT"

我们的connect_string看起来像这样 "DRIVER=ODBC Driver 17 for SQL Server;DATABASE=master;SERVER=127.0.0.28;UID=testing;PWD=testing"

从错误消息中,ODBC驱动程序报告SSL错误?但是我的MSSQL服务器从未设置启用SSL。并且我的sqlcmd可以毫无问题地与我的MSSQL连接。

进行了一些进一步的研究,并从MSSQL odbc驱动程序中查找SSL错误。这是我通过检查SSL错误找到的内容

/usr/bin/openssl errstr 0x140A90A1 error:140A90A1:SSL routines:SSL_CTX_new:library has no ciphers

0 个答案:

没有答案