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

使用Ruby(TinyTds)连接Azure SQL数据库时遇超时错误求助

解决Azure SQL Server连接TinyTds超时(重定向连接失败)问题
  • 检查TinyTds连接参数的重定向支持
    Azure SQL Server默认会将连接重定向到实际数据库节点,TinyTds需要正确配置参数才能支持这一特性。确保你的连接代码包含以下关键参数:

    client = TinyTds::Client.new(
      username: "你的SQL身份验证用户名",
      password: "你的SQL身份验证密码",
      host: "<mydb>.database.windows.net",
      database: "目标数据库名",
      port: 1433,
      encrypt: true,  # Azure SQL强制要求加密连接
      trust_server_certificate: false,  # 验证服务器证书,避免证书信任问题
      tds_version: "7.4",  # 适配Azure SQL的TDS版本,支持重定向
      login_timeout: 30  # 延长登录超时时间,避免短时间内连接失败
    )
    

    其中encrypt: true是强制要求,tds_version: "7.4"确保支持Azure SQL的重定向逻辑。

  • 确认本地/网络的出站端口权限
    重定向连接会使用Azure SQL的高范围端口(11000-11999),如果本地防火墙、路由器或公司网络策略限制了这些端口的出站访问,就会导致超时。

    • 检查本地防火墙是否允许出站到11000-11999端口;
    • 联系网络管理员确认公司网络是否放行这些端口的流量。
  • 修改Azure SQL Server的连接策略
    如果重定向端口无法放行,可以将Azure SQL的连接策略改为代理模式,强制所有连接通过1433端口通信:

    1. 登录Azure门户,找到目标SQL Server;
    2. 进入「连接安全性」选项卡;
    3. 在「连接策略」下拉菜单中选择「代理」;
    4. 保存设置后等待数分钟,再尝试连接。
      注意:代理模式会带来轻微的性能损耗,但能绕过重定向端口限制。
  • 升级TinyTds到最新版本
    旧版本的TinyTds可能不支持Azure SQL的重定向特性,运行以下命令检查并升级:

    # 查看当前版本
    gem list tiny_tds
    # 升级到最新版
    gem install tiny_tds
    

    或者在Rails项目的Gemfile中指定版本:

    gem "tiny_tds", ">= 2.1.0"
    

    执行bundle install完成升级。

  • 验证防火墙规则的准确性
    确保你添加的Azure SQL防火墙规则使用的是本地机器的公网IP地址(而非内网IP)。查询自己的公网IP后,在Azure门户的SQL Server「防火墙和虚拟网络」中添加该IP的单个范围(如x.x.x.x到x.x.x.x),等待5-10分钟让规则生效后重试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:15:21