[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)
Pyodbc [HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)
使用pyodbc连接SQL Server时,报超时错误。
代码
import pyodbc
driver = '{ODBC Driver 17 for SQL Server}'
server = '192.168.50.106,1433'
database = 'books'
username = 'sa'
password = '123456'
cnxn = pyodbc.connect(
'DRIVER={};SERVER={};DATABASE={};UID={};PWD={}'.format(
driver,
server,
database,
username,
password
)
)
cursor = cnxn.cursor()
cursor.execute("SELECT @@version;")
row = cursor.fetchone()
while row:
print(row[0])
row = cursor.fetchone()
报错信息
/usr/bin/python3.8 /home/wj/wj/project/test/test.py
Traceback (most recent call last):
File "/home/wj/wj/project/test/test.py", line 10, in <module>
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=192.168.50.106,1433;DATABASE=books;UID=sa;PWD=123456')
pyodbc.OperationalError: ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')
Process finished with exit code 1
找出报错原因
关闭防火墙
控制面板\系统和安全\Windows Defender 防火墙\自定义设置
关闭防火墙可成功连接。
得出结论
SQL Server TCP连接端口没有开放。
解决方法
Windows
- 打开SQL Server 配置管理器(SQL Server Configuration Manager),按图示查看SQL Server TCP端口号。
- 进入
控制面板\系统和安全\Windows Defender 防火墙
,点击高级设置
。 - 在
高级设置
中,点击入站规则
,然后点击新建规则
。 新建规则
中,要创建的规则类型选择端口(O)
。- 下一步选择
TCP
和特定本地端口
,特定本地端口
就是SQL Server 配置管理器中找到的端口号。 - 下一步选择
允许连接
。 - 下一步何时应用该规则,默认选择即可。
- 下一步填写
名称
和描述
,这一步可自定义。 - 下一步
完成
即可。
还没有评论,来说两句吧...