
[英]SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x2746
[英][08001][Microsoft][ODBC Driver 18 for SQL Server]TCP Provider: Error code 0x2746 - Ubuntu 22.04
我正在尝试从我的 ubuntu 服务器 22.04 连接到 MS SQL 服务器 2016。
我已经按照官方 MS 文档安装了 odbc 驱动程序: https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql -server?view=sql-server-ver16
安装工作正常,我可以连接到较新的 MS SQL 服务器,问题是连接到 2016 SQL 服务器,看起来像 ZEE302FD5FD2A7A5A3C19FC5BE21F979C 版本的问题。 Ubuntu 22.04 默认使用 openssl 3.xx
我通过添加到 /etc/odbcinst.ini 启用了一些调试选项
[ODBC]
Trace = Yes
TraceFile = /dev/stdout
output 并没有太大帮助。 我找到了一些解决方案,但总是与旧的 ubuntu 相关。
这是 output:
[ODBC][62430][1664301799.879691][__handles.c][460]
Exit:[SQL_SUCCESS]
Environment = 0x55b6b35d3870
[ODBC][62430][1664301799.879839][SQLAllocHandle.c][377]
Entry:
Handle Type = 2
Input Handle = 0x55b6b35d3870
UNICODE Using encoding ASCII 'UTF-8' and UNICODE 'UCS-2LE'
[ODBC][62430][1664301799.880405][SQLAllocHandle.c][513]
Exit:[SQL_SUCCESS]
Output Handle = 0x55b6b35d4590
[ODBC][62430][1664301799.880465][SQLDriverConnect.c][748]
Entry:
Connection = 0x55b6b35d4590
Window Hdl = (nil)
Str In = [Driver={ODBC Driver 18 for SQL Server};Server=tcp:xxxx,1433;Database=xxx;UID=xxx;PWD=**********;][length = 116 (SQL_NTS)]
Str Out = 0x7fffe858da30
Str Out Max = 2048
Str Out Ptr = (nil)
Completion = 0
[ODBC][62430][1664301799.903128][__handles.c][460]
Exit:[SQL_SUCCESS]
Environment = 0x55b6b370ad10
[ODBC][62430][1664301799.903245][SQLGetEnvAttr.c][157]
Entry:
Environment = 0x55b6b370ad10
Attribute = 65002
Value = 0x7fffe8586090
Buffer Len = 128
StrLen = 0x7fffe858602c
[ODBC][62430][1664301799.903298][SQLGetEnvAttr.c][273]
Exit:[SQL_SUCCESS]
[ODBC][62430][1664301799.903319][SQLFreeHandle.c][220]
Entry:
Handle Type = 1
Input Handle = 0x55b6b370ad10
DIAG [08001] [Microsoft][ODBC Driver 18 for SQL Server]TCP Provider: Error code 0x2746
DIAG [08001] [Microsoft][ODBC Driver 18 for SQL Server]Client unable to establish connection
[ODBC][62430][1664301799.903893][SQLDriverConnect.c][1637]
Exit:[SQL_ERROR]
[ODBC][62430][1664301799.903976][SQLError.c][424]
Entry:
Connection = 0x55b6b35d4590
SQLState = 0x7fffe858f046
Native = 0x7fffe858f040
Message Text = 0x7fffe858f050
Buffer Length = 500
Text Len Ptr = 0x7fffe858f03e
[08001][Microsoft][ODBC Driver 18 for SQL Server]TCP Provider: Error code 0x2746
[08001][Microsoft][ODBC Driver 18 for SQL Server]Client unable to establish connection
另外,我已经安装了 OpenSSL 1.0.1k 手动编译代码,但是从 isql 或 sqlcmd 中查找 strace 仍然使用 openssl 3 你可以在这里看到:
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libcrypto.so.3", O_RDONLY|O_CLOEXEC) = 4
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libssl.so.3", O_RDONLY|O_CLOEXEC) = 4
您知道如何从 odbc 驱动器更改 libssl 吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.