[08001][Microsoft][适用于 SQL Server 的 ODBC 驱动程序 18]TCP 提供程序:错误代码 0x2746 - Ubuntu 22.04

问题描述 投票:0回答:1

我正在尝试从我的 ubuntu 服务器 22.04 连接到 MS SQL Server 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 Server,看起来像是 OpenSSL 版本的问题。 Ubuntu 22.04 默认使用 openssl 3.x.x.

我通过添加到 /etc/odbcinst.ini 启用了一些调试选项

[ODBC]
Trace = Yes
TraceFile = /dev/stdout

而且输出并没有多大帮助。我找到了一些解决方案,但总是与旧的 ubuntu 有关。

这是输出:

[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 吗?

sql-server openssl odbc ubuntu-22.04
1个回答
0
投票

Laravel 项目中 MSSQL 连接和 OpenSSL 错误解决方案 朋友们大家好,我已经研究了3天了,但无法建立连接。最后,我能够连接到mssql。 虽然我在 Ubuntu 服务器上安装了 mssql 驱动程序,但由于 openssl,我无法安装按钮。尽管我尝试了很多openssl版本,但它不起作用。 我终于能够建立联系了。感谢 Sql Server 链接服务器功能,我能够避免 openssl 问题的老化。 我们提供以下步骤供您安装此类交换机的信息。

© www.soinside.com 2019 - 2024. All rights reserved.