pymssql连接sql server报错:pymssql._pymssql.OperationalError

本文介绍了如何使用PyCharm通过pymssql库连接到SQLSERVER数据库,以及解决TCP/IP动态端口导致的远程连接失败问题。错误信息显示 Adaptive Server 不可用或不存在,通过配置SQLSERVER的TCP/IP协议,将所有TCP动态端口清空,IPALL的TCP端口设为1433,并重启数据库服务,最终成功建立连接。

应用场景

使用pycharm编译器连接SQL SERVER 数据库采用pymssql第三方库,SQL SERVER的TCP/IP协议默认端口是动态的,所以进行远程连接失败。

错误信息

pycharm的terminal报错信息:
pymssql._pymssql.OperationalError: (20009, b’DB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist (127.0.0.1)\nNet-Lib error during Unknown error (10061)\nDB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist (127.0.0.1)\nNet-Lib error during Unknown error (10061)\n’)

配置过程

步骤1: 打开用户界面,选择配置管理器在这里插入图片描述

步骤2: 选择网络配置,选择TCP/IP行,右键将状态修改为启用,双击此行选择IP地址,将所有TCP动态端口置空,并将IPALL的TCP端口设置为1433。

在这里插入图片描述

步骤3:点击左侧服务,右键第一行选择重启数据库
在这里插入图片描述
至此,端口配置完成,进入代码测试阶段。

测试片段

import pymssql
serverName = '127.0.0.1'    #目的主机ip地址
userName = 'student'        #SQL Server身份账号
passWord = 'student'        #SQL Server身份密码
dbName = 'education'        #对应数据库名称
# connect = pymssql.connect(serverName, userName, passWord,dbName) #SQL Server身份验证建立连接
connect = pymssql.connect(server = serverName , database = dbName) #Window默认身份验证建立连接

if connect:
    print("连接成功!")

写在最后

博主第一次分享博文,多多支持。有其他问题欢迎私信,欢迎一键三连。

### 报错原因 该错误信息 `pymssql.OperationalError: (47072, b'Reason: Login failed due to client TLS version being less than minimal TLS version allowed by the server...')` 表明客户端使用的TLS版本低于服务器所允许的最低TLS版本,从而导致登录失败。服务器通常会设置一个最低的TLS版本要求,以确保通信的安全性。如果客户端使用的TLS版本低于这个要求,服务器会拒绝连接请求[^1]。 ### 解决方案 #### 1. 更新Python环境 确保使用的Python版本支持较新的TLS版本。一般来说,较新的Python版本会默认支持TLS 1.2及以上版本。可以通过以下命令检查Python版本: ```python import sys print(sys.version) ``` 如果Python版本较旧,建议升级到最新的稳定版本。 #### 2. 更新OpenSSL库 Python的SSL功能依赖于OpenSSL库,因此需要确保OpenSSL库是最新版本。不同操作系统的更新方法不同,以下是一些常见操作系统的更新命令: - **Ubuntu/Debian**: ```bash sudo apt-get update sudo apt-get install openssl libssl-dev ``` - **CentOS/RHEL**: ```bash sudo yum update openssl ``` - **macOS**: 可以使用Homebrew来更新OpenSSL: ```bash brew update brew upgrade openssl ``` #### 3. 配置客户端TLS版本 在某些情况下,可以通过修改Python代码来强制客户端使用特定的TLS版本。虽然pymssql本身没有直接提供设置TLS版本的选项,但可以通过修改底层的SSL上下文来实现。以下是一个示例代码: ```python import pymssql import ssl # 创建一个SSL上下文并设置TLS版本 context = ssl.create_default_context() context.minimum_version = ssl.TLSVersion.TLSv1_2 # 在连接数据库时使用该SSL上下文 server = 'your_server' user = 'your_user' password = 'your_password' database = 'your_database' conn = pymssql.connect( server=server, user=user, password=password, database=database, tds_version='7.0', ssl_context=context ) cursor = conn.cursor() cursor.execute('SELECT 1') row = cursor.fetchone() print(row) conn.close() ``` #### 4. 降低服务器的最低TLS版本要求 如果以上方法都无法解决问题,可以考虑降低服务器的最低TLS版本要求。但这不是一个推荐的做法,因为较低的TLS版本可能存在安全风险。降低服务器的最低TLS版本要求需要在服务器端进行配置,具体步骤因服务器类型而异。 ###
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值