1、报错
连接失败: (‘08001’, '[08001] [Microsoft][ODBC Driver 17 for SQL Server]SQL Server 网络接口: 定位指定的 Server/Instance
时出错 [xFFFFFFFF]. (-1) (SQLDriverConnect); [08001] [Microsoft][ODBC Driver 17 for SQL Server]登录超时已过期 (0); [080
01] [Microsoft][ODBC Driver 17 for SQL Server]与 SQL Server 建立连接时发生了与网络相关的或特定于实例的错误。找不到或无法
访问服务器。请检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书
2、代码
import pyodbc
def connect_to_sql_server():
try:
# 连接字符串
conn_str = (
r'DRIVER={ODBC Driver 17 for SQL Server};' # 根据实际驱动版本调整
r'SERVER=WIN-MSRDEN2TUV1\LEGENDLI;'
r'DATABASE=master;' # 指定要连接的数据库
r'UID=sa;'
r'PWD=1;'
)
# 建立连接
conn = pyodbc.connect(conn_str)
print("连接成功!")
# 创建游标
cursor = conn.cursor()
# 执行 SQL 查询
cursor.execute("SELECT @@VERSION")
row = cursor.fetchone()
print(f"SQL Server 版本: {row[0]}")
# 关闭连接
cursor.close()
conn.close()
except Exception as e:
print(f"连接失败: {str(e)}")
if __name__ == "__main__":
connect_to_sql_server()
3、分析
- 1、首先测试本机程序是否能正常连接
- 2、首先确保sqlserver所在电脑的防火墙是关闭的
- 3、检查是否能ping 通
- 4、检查连接的主机服务器名字是否正确
- 5、检查sqlserver服务是否开启
- 6、在sqlserver配置里将对应数据库的TCP/IP , 管道打开,然后重启sqlserver服务
- 7、在SSMS里允许远程连接
- 8、检查sql browser是否启动,若没有启动则需要在连接那里加上指定端口, r’SERVER=WIN-MSRDEN2TUV1\LEGENDLI,1433;'原因如下
命名实例未启用 SQL Browser 服务
SQL Browser 服务的作用:
当客户端连接命名实例时,若未指定端口,浏览器服务会返回实例对应的动态端口。
如何验证:
在 SQL Server 服务器上,打开 服务管理器,检查 SQL Server Browser 服务是否 正在运行(状态为 启动)。
若未运行:客户端无法自动获取端口,必须在连接字符串中显式指定端口(如 ,1433)。 - 9、采用telnet 测试端口,或者 Test-NetConnection -ComputerName IP -Port 1433
如果以上流程都验证了,还是不能连接,那就卸了重装吧