首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mssql TCP提供程序:错误代码0x2746 (10054) (SQLDriverConnect)

mssql TCP提供程序:错误代码0x2746 (10054) (SQLDriverConnect)
EN

Stack Overflow用户
提问于 2022-04-03 20:14:00
回答 1查看 958关注 0票数 0

在连接到Server实例时遇到问题,希望得到任何帮助才能正常工作。

优点:我有一个在Docker (Debian10)主机上运行的dockerized 4应用程序,它连接到开发环境中的一个网络Server 2012 (运行在Windows10框上)。

Bad:无法在暂存环境中获得连接到Server 2014 (运行在Server2012 VM上)的同一个坞映像。可以在Server事件日志上看到DB连接成功:

代码语言:javascript
运行
复制
Login succeeded for user '<USERNAME>'. Connection made using SQL Server authentication. [CLIENT: <DB_SERVER_IP>]

但是,Django使用以下堆栈跟踪出错:

代码语言:javascript
运行
复制
alluradjango-web-1  |     self.connect()
alluradjango-web-1  |   File "/home/djangouser/.local/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
alluradjango-web-1  |     return func(*args, **kwargs)
alluradjango-web-1  |   File "/home/djangouser/.local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 200, in connect
alluradjango-web-1  |     self.connection = self.get_new_connection(conn_params)
alluradjango-web-1  |   File "/home/djangouser/.local/lib/python3.9/site-packages/mssql/base.py", line 329, in get_new_connection
alluradjango-web-1  |     conn = Database.connect(connstr,
alluradjango-web-1  | django.db.utils.OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x2746 (10054) (SQLDriverConnect)')

settings.py:

代码语言:javascript
运行
复制
DATABASES = {
    "default": {
        "ENGINE": "mssql",
        "NAME": DB_NAME,
        "HOST": DB_HOST,
        "PORT": DB_PORT,
        "USER": DB_USER,
        "PASSWORD": DB_PASSWORD,
        "AUTOCOMMIT": "false",
        "OPTIONS": {
            "ENGINE": "ODBC Driver 17 for SQL Server"
        },
    },

requirements.txt:

代码语言:javascript
运行
复制
asgiref==3.5.0
backports.zoneinfo==0.2.1
Django==4.0.3
django-allow-cidr==0.4.0
django-environ
djangorestframework==3.13.1
mssql-django==1.1.2
netaddr==0.8.0
pyodbc==4.0.32
pytz==2021.3
sqlparse==0.4.2
black==22.1.0
pylint==2.12.2
pylint-django==2.5.2
python-decouple==3.6
pre-commit==2.17.0
代码语言:javascript
运行
复制
djangouser@2062b37a0a3a:~$ odbcinst -j
unixODBC 2.3.6
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/djangouser/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

/etc/odbc.ini为空

代码语言:javascript
运行
复制
djangouser@2062b37a0a3a:~$ cat /etc/odbcinst.ini
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.9.so.1.1
UsageCount=1

Server主机操作系统上的防火墙关闭。nmap显示端口是开放的。并且,如前所述,可以在Server主机OS日志上看到连接成功。

但是,上述错误仍然存在。任何帮助都会很感激,我已经被困了9天了。

选择@@version (2012年实例):Microsoft 2012 (SP2-GDR) (KB3194719) - 11.0.5388.0 (X64) 2016年9月23日16:56:29版权(c) Edition (64位) on Windows 6.3 (Build 19044:)

选择@@version (2014年实例):Microsoft 2014 (SP3-GDR) (KB4583463) - 12.0.6164.21 (X64) 2020年11月1日04:25:14版权(c) Microsoft Corporation Express Edition (64位) on Windows 6.3 (Build 9600:) (Hypervisor)

EN

回答 1

Stack Overflow用户

发布于 2022-09-14 16:03:11

解决:降级OpenSSL版本

将此添加到我的Dockerfile允许建立连接(仍然不确定为什么加密):

代码语言:javascript
运行
复制
#Downgrade OpenSSL RUN curl openssl.org/source/openssl-1.1.1l.tar.gz -O \ && tar -zxvf openssl-1.1.1l.tar.gz && cd openssl-1.1.1l \ && ./config \ && make \ && make install \ && ldconfig \ && cd .. 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71729516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档