SQL Server连接错误20009求助:多项排查后仍无法连接数据库
错误信息
(20009, b'DB-Lib error message 20009, severity 9:
Unable to connect: Adaptive Server is unavailable or does not exist (127.0.0.1,4096)
已执行的排查操作
- 已启用端口4096的TCP/IP
- 尝试启用和禁用命名管道两种模式
- 已为登录账户AA分配dbcreator服务器角色
- 已启用远程连接
使用的连接代码
import pymssql conn = pymssql.connect( host=r'127.0.0.1,4096', user=r'AA', password=r'BBBBBBBBBBBB', database='table' ) cursor = conn.cursor(as_dict=True) cursor.execute("SELECT @@version;") row = cursor.fetchone() while row: print(row[0]) row = cursor.fetchone()
进一步排查与解决方向
确认SQL Server服务状态
打开服务管理器(services.msc),检查目标SQL Server实例的服务是否处于运行状态。默认实例服务名为SQL Server (MSSQLSERVER),命名实例格式为SQL Server (实例名),若服务未启动则手动启动。校验端口配置有效性
打开SQL Server配置管理器:- 展开SQL Server网络配置 → 对应实例的TCP/IP → 右键属性 → 切换到
IP地址标签页 - 检查
IPAll区域的TCP端口是否为4096,且TCP动态端口为空(动态端口会覆盖固定端口设置) - 修改配置后重启SQL Server服务,确保端口监听生效
- 展开SQL Server网络配置 → 对应实例的TCP/IP → 右键属性 → 切换到
测试端口连通性
使用以下工具验证端口是否可访问:- 命令行执行
telnet 127.0.0.1 4096 - PowerShell执行
Test-NetConnection 127.0.0.1 -Port 4096
若连通失败,检查Windows Defender防火墙或第三方防火墙是否允许4096端口的入站连接,必要时添加端口放行规则。
- 命令行执行
检查账户认证与权限
- 确认SQL Server启用混合模式认证(SQL Server和Windows身份验证模式):右键实例 → 属性 → 安全性,若仅启用Windows认证,SQL账户AA无法登录
- 用SQL Server Management Studio直接登录账户AA,验证密码正确性、账户是否被锁定,以及是否有权限访问目标数据库
核对数据库名称
代码中database='table'需确保数据库名称拼写完全正确,且该数据库确实存在于目标实例中(可在SSMS中确认数据库列表)排查驱动兼容性
- 升级pymssql到最新稳定版:
pip install --upgrade pymssql - 尝试用pyodbc替代测试,排除pymssql驱动问题:
import pyodbc conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=127.0.0.1,4096;DATABASE=table;UID=AA;PWD=BBBBBBBBBBBB')
- 升级pymssql到最新稳定版:
内容的提问来源于stack exchange,提问作者Bittumon K B
相关产品推荐
相关产品推荐

