使用IP地址连接远程SQL Server失败,求助排查解决方法
远程连接SQL Server失败的问题排查与修复
核心问题
本地通过服务器名连接SQL Server并创建表正常,但使用IP地址远程连接时失败,已完成创建SQL用户、启用TCP/IP、添加防火墙1433端口规则等操作,仍报错。
报错信息(翻译后)
('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]命名管道提供程序: 无法打开与SQL Server的连接 [53]。 (53) (SQLDriverConnect); [08001] [Microsoft][ODBC Driver 17 for SQL Server]登录超时已过期 (0); [08001] [Microsoft][ODBC Driver 17 for SQL Server]无效的连接字符串属性 (0); [08001] [Microsoft][ODBC Driver 17 for SQL Server]建立与SQL Server的连接时发生了与网络相关或特定于实例的错误。找不到服务器或无法访问。请检查实例名称是否正确,以及SQL Server是否配置为允许远程连接。有关详细信息,请参阅SQL Server联机丛书。 (53)')
首要修复:连接字符串格式错误
你的代码中把连接参数写成了元组,而pyodbc.connect()需要接收单个完整字符串或关键字参数,元组会导致连接字符串解析失败,这是报错中“无效的连接字符串属性”的直接原因。修正后的代码如下:
import pyodbc # 合并为单个连接字符串,端口直接跟在IP后用逗号分隔 cnxn_str = "Driver={ODBC Driver 17 for SQL Server};Server=192.168.1.12,1433;Database=tpms;UID=malhar;PWD=malhar1234;Trusted_Connection=no;" try: connection = pyodbc.connect(cnxn_str) cursor = connection.cursor() create_table = ''' CREATE TABLE tpms_info ( tyre_id INT IDENTITY(1,1), tyre_position VARCHAR(50) ) ''' cursor.execute(create_table) connection.commit() cursor.close() connection.close() print("表创建成功") except Exception as e: print(f"Error: {str(e)}")
后续排查点
如果修正后仍无法连接,按以下步骤逐一验证:
- 确认SQL Server服务状态:远程机器上打开服务管理器,检查
SQL Server(实例名)服务是否正在运行(默认实例为MSSQLSERVER);若为命名实例,连接字符串需改为Server=192.168.1.12\实例名,1433 - 检查TCP/IP配置细节:在SQL Server配置管理器中,进入
SQL Server网络配置 -> 实例的协议 -> TCP/IP,右键属性切换到IP地址标签:- 确认
IPAll下的TCP端口设置为1433 - 确认所有启用的IP地址对应的
TCP端口也为1433 - 配置完成后重启SQL Server服务
- 确认
- 验证网络连通性:
- 本地执行
ping 192.168.1.12,确认远程机器可达 - 用PowerShell执行
Test-NetConnection 192.168.1.12 -Port 1433,检查1433端口是否开放
- 本地执行
- 确认身份验证模式:在SSMS中右键远程服务器 -> 属性 -> 安全性,确保选择了SQL Server和Windows身份验证模式,否则SQL账号无法登录
- 检查SQL账号权限:确认
malhar账号已启用,且拥有tpms数据库的CREATE TABLE权限
内容的提问来源于stack exchange,提问作者Malhar
相关产品推荐
相关产品推荐

