在Jupyter Notebook中用pyodbc连接SQL数据库遇登录超时问题
收到如下错误提示:
OperationalError: ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')
我的代码如下:
import pyodbc conn_str = ("Server=xxx.database.windows.net;" +"PORT=1433;" +"Driver={ODBC Driver 17 for SQL Server};" +"Database=xxx;" +"Connection Timeout=60;" +"Authentication=ActiveDirectoryInteractive;" +"UID=xxxx;" ) cnxn = pyodbc.connect(conn_str)
运行代码时,单元格长时间加载后出现上述错误,本该弹出的多因素认证(MFA)窗口并未出现,我怀疑这是问题根源。
我已在ODBC数据源管理器中使用相同登录信息测试连接,MFA窗口正常弹出且连接成功:
Microsoft ODBC Driver for SQL Server Version 17.10.0003
Running connectivity tests...
Attempting connection
Connection established
Verifying option settings
INFO: A network alias was found for the DSN server. 'Protocol: xxx; Address: xxxx.database.windows.net' was used to establish the connection.
INFO: Connection was encrypted with server certificate validation.
Disconnecting from serverTESTS COMPLETED SUCCESSFULLY!
我还尝试了以下操作:
- 在VSCode和Edge浏览器中运行笔记本(Edge已允许重定向和弹窗)
- 为1433端口设置防火墙豁免
- 添加
TrustServerCertificate=yes;和ENCRYPT=yes - 通过MSSQL成功访问数据库
- 移除端口参数并将
,<port number>添加到服务器名中
恳请各位提供帮助,谢谢。
内容的提问来源于stack exchange,提问作者Cherise Holmes

