首页 > 编程问答 >[Microsoft][ODBC Driver 17 for SQL Server]TCP 提供程序:错误代码 0x2746 - 客户端无法建立连接

[Microsoft][ODBC Driver 17 for SQL Server]TCP 提供程序:错误代码 0x2746 - 客户端无法建立连接

时间:2024-08-05 16:49:04浏览次数:20  
标签:python openssl odbc driver odoo-11

我正在尝试运行 odoo 项目

ubuntu: 22.04
pyodbc==4.0.28
python: 3.8
openssl version: OpenSSL 1.1.1p  21 Jun 2022
**ERROR: DIAG [08001] [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x2746
             DIAG [08001] [Microsoft][ODBC Driver 17 for SQL Server]Client unable to establish connection**
isql -v -k - With this command i connect to my the server and there is no problem  
input > openssl version
output > OpenSSL 1.1.1p  21 Jun 2022

但是


input > sudo apt list --installed | grep openssl
output > libxmlsec1-openssl/jammy,now 1.2.33-1build2 amd64 [installed,automatic]
         openssl/jammy-updates,jammy-security,now 3.0.2-0ubuntu1.17 amd64 [installed]

我更改了 openssl.cnf 文件并添加了一些新行(来自其他不起作用的解决方案)

**openssl_conf = default_conf
[ default_conf ]

ssl_conf = ssl_sect

[ssl_sect]

system_default = system_default_sect

[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT:@SECLEVEL=1**

还尝试了 CipherString = DEFAULT:@SECLEVEL=0


遇到了“客户端无法建立连接”的错误,这在使用 pyodbc 连接 SQL Server 时很常见。虽然已经尝试了一些常见的解决方案,但问题依然存在。让我们来系统地排查一下:

1. 网络连接问题:

  • 防火墙: 确保的 SQL Server 和 Ubuntu 服务器之间的防火墙没有阻止 SQL Server 默认端口 (1433) 上的连接。
  • 远程连接: 确认 SQL Server 实例启用了远程连接。
  • 网络可达性: 从 Ubuntu 服务器 ping SQL Server,确保网络连接正常。
  • 端口监听: 在 SQL Server 上,使用 netstat -an | findstr "1433" 命令检查端口 1433 是否在监听。

2. 身份验证问题:

  • 连接字符串: 仔细检查的 pyodbc 连接字符串,确保用户名、密码和数据库名称正确无误。
  • SQL Server 身份验证: 确认使用的是正确的身份验证模式 (Windows 身份验证或 SQL Server 身份验证)。

3. OpenSSL 版本不匹配:

  • 虽然检查了 OpenSSL 版本,但 isql pyodbc 可能使用不同的 OpenSSL 库。
  • 尝试使用 ldd $(which isql) ldd $(which python) 命令查看它们分别链接到哪个 OpenSSL 库。
  • 如果版本不一致,可能需要创建符号链接或调整环境变量,使 pyodbc 使用与 isql 相同的 OpenSSL 库。

4. pyodbc 和 Driver 版本:

5. 驱动程序配置:

  • 尝试在 /etc/odbc.ini 文件中添加以下配置: ```ini [ODBC Data Sources] your-dsn-name = Microsoft ODBC Driver 17 for SQL Server

    [your-dsn-name] Driver = /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.9.so.1.1 Server = your-sql-server-address Database = your-database-name UID = your-username PWD = your-password `` * 将 your-dsn-name , your-sql-server-address , your-database-name , your-username your-password` 替换为的实际值。

其他建议:

  • 启用 SQL Server 和 ODBC 驱动程序的日志记录,以便更详细地了解错误原因。
  • 尝试使用其他 Python SQL Server 连接库,例如 pymssql ,以排除 pyodbc 本身的问题。

请提供以下信息,以便我更好地帮助:

  • SQL Server 版本
  • 完整的 pyodbc 连接字符串
  • ODBC 驱动程序安装目录
  • 更详细的错误日志 (SQL Server 和 ODBC 驱动程序)

通过仔细检查这些方面,应该能够找到导致“客户端无法建立连接”错误的根本原因并解决它。

标签:python,openssl,odbc,driver,odoo-11
From: 78833553

相关文章

  • 无法加入进程,只能终止[Python 3.11,多处理]
    我有一个问题要问对Python的多处理库有更​​多经验的人,此时我几乎迷失了方向。我目前正在构建一个应该在Windows11和Windows11上运行的图像处理应用程序装有DebianLinux的OrangePi5。我的设置是,除了主程序之外,还有另外两个进程,一个用于处理不间断的......
  • Python 将Word转换为JPG、PNG、SVG图片
    将Word文档以图片形式导出,既能方便信息的分享,也能保护数据安全,避免被二次编辑。文本将介绍如何使用 Spire.DocforPython 库在Python程序中实现Word到图片的批量转换。Python将Word转换为JPG、JPEG、PNG、BMP等图片格式Python将Word文档转换为SVG格式 Python库安装: ......
  • C 和 Python 代码的函数的不同十六进制转储值
    这是我的示例C代码,用于从user32.dll中转储MessageBoxA:#include<windows.h>#include<stdio.h>voidDumpFun(HANDLEprocess,LPVOIDaddress,SIZE_Tdump_size){BYTE*buffer=(BYTE*)malloc(dump_size);if(buffer==NULL){pri......
  • 是否有对数累积分布函数 (CDF) 和分位数函数的数值稳定的 Python 实现?
    我正在寻找以下函数的数值稳定实现。由于我的应用涉及t分布,所以我这里以t分布为例。LogCDF#NaivePythonimplementationofthefunctionIneedimportscipyimportnumpyasnpdeft_log_cdf(x,df):p=scipy.stats.t.cdf(x,df=df)returnnp.log(......
  • 如何将 *args 参数作为字符串传递给 Python 函数
    我正在使用pytubefix制作一个Youtube下载器。API允许我编写如下代码:YouTube(url).streams.filter(progressive=True)但是假设我有一个字符串存储在像args="progressive=True"这样的变量中,我如何使用args字符串来调用函数,就像......
  • Python Telegram Bot 从数据库获取数据时出错
    我正在开发用于管理企业用途任务的电报机器人。团队负责人注册他的公司并获得唯一的ID,然后可以分配任务。问题是,当团队负责人分配任务时,他可以使用/viewtasks访问它们。但是,当员工尝试查看任务时,它会打印出“错误。您尚未注册”。似乎无法检索与用户关联的company_id,即使......
  • 在 Glue 作业中使用 python3+ 创建 CloudFront 签名 URL
    是否可以使用python3+为GlueJob中S3文件中的一个特定文件创建具有一定时间限制的CloudFront签名URL?我看到可以在Lambda中做到这一点,但在Python文档中找不到任何内容,特别是胶水工作。任何人都可以提供一些提示吗?defload_private_key(key_path):withopen(......
  • 【Python学习手册(第四版)】学习笔记14-迭代器和列表解析(一)
    个人总结难免疏漏,请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。本文主要以通俗易懂的语言介绍迭代器(文件迭代、手动迭代iter和next等),列表解析式包括基础知识包括写法、文件上使用列表解析、扩展列表解析语法等,对列表解析不懂的同学着重推荐......
  • 如何获取部署在 Azure 应用服务上并通过 Microsoft 身份提供商进行身份验证的 Python
    我使用PythonDash包构建了一个Web应用程序,并将该应用程序部署在Azure应用服务上。Web应用程序当前通过Azure门户的应用程序服务使用Microsoft身份提供程序进行身份验证。但是如何获取登录用户的详细信息呢?在本地运行时如何验证我的Web应用程序?我当前的登录流......
  • 使用 Python 打印此图案
    1010101010101010使用python打印此我已经尝试过defprint_pattern(rows):foriinrange(rows):start_char='1'ifi%2==0else'0'pattern=''.join(start_charifj%2==0else('0'ifs......