You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure容器内Web应用ODBC连接SQL Server遇HYT00登录超时错误求助

Azure容器化Web应用ODBC连接SQL Server超时(HYT00错误)

本地环境及本地Docker Desktop容器中,ODBC连接SQL Server均正常,但部署到Azure容器化Web应用时抛出登录超时错误。

错误信息

ERROR:root:Error message: ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')
ERROR:root:Error type: OperationalError

连接代码片段

connect_string = f"DRIVER={DATABASE_DRIVER};"
connect_string += f"SERVER={DATABASE_PROTOCOL}:{DATABASE_SERVER},"
connect_string += f"{DATABASE_PORT};"
connect_string += f"DATABASE={DATABASE_NAME};"
connect_string += f"UID={DATABASE_USER};"
connect_string += f"PWD={DATABASE_PASSWORD}"

try:
    conn = pyodbc.connect(connect_string)

已尝试的排查步骤

  • 确认SQL Server可访问
  • 验证登录凭据正确
  • 确认防火墙未阻止对应IP的连接
  • 延长登录超时时间

针对性排查与修复步骤

  • 开启Azure SQL Server的Azure服务访问权限:
    登录Azure门户,进入目标SQL Server的「防火墙和虚拟网络」设置,勾选「允许Azure服务和资源访问此服务器」选项。Azure容器化应用属于Azure内部服务,默认可能被SQL Server防火墙拦截,开启此选项可允许内部服务连接。

  • 检查连接字符串的SERVER格式正确性:
    ODBC连接SQL Server的标准格式为tcp:<server-name>,<port>,确认DATABASE_PROTOCOL的值为tcp,且服务器地址是Azure SQL Server的完整FQDN(例如<server-name>.database.windows.net),端口与地址间用逗号分隔(你的代码格式没问题,重点验证变量值是否准确)。

  • 验证容器镜像的ODBC驱动安装:
    确保Azure容器使用的镜像中已正确安装ODBC Driver 17 for SQL Server。比如基于Debian/Ubuntu的镜像,需在Dockerfile中添加以下安装步骤:

    RUN apt-get update && apt-get install -y unixodbc unixodbc-dev msodbcsql17
    

    本地Docker镜像可能已包含驱动,但部署到Azure的镜像可能缺失该依赖,导致连接失败。

  • 检查容器网络与VNet配置:
    如果容器应用用了Azure虚拟网络(VNet)集成,要确保:

    • VNet与SQL Server所在VNet已建立对等连接
    • SQL Server防火墙已添加该VNet的地址范围到允许列表
  • 排查容器出站网络限制:
    检查容器应用所在的网络安全组(NSG)是否允许出站流量访问1433端口(SQL Server默认端口),若有出站规则限制需调整。

  • 确认SQL Server认证方式:
    确保Azure SQL Server已启用SQL认证(若用SQL账号密码登录),在Azure门户SQL Server的「配置」选项中确认「SQL认证」已开启,且登录账号拥有目标数据库的访问权限。

内容的提问来源于stack exchange,提问作者prashangrg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:52:30