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

Next.js API路由连接SQL Server本地正常,部署Vercel后失败求助

解决Vercel部署Next.js项目后无法连接SQL Server的问题

问题核心分析

从报错getaddrinfo EBUSY ayaanshaikh可以明确:Vercel服务器无法解析你设置的SQL Server主机名ayaanshaikh——这是你本地机器的主机名,仅在本地网络有效,公网环境下的Vercel服务根本找不到这个地址,这是导致连接失败的直接原因。

解决方案步骤

1. 修正SQL Server服务器地址配置

  • 将SERVER_NAME环境变量的值从本地主机名ayaanshaikh替换为:
    • 若使用本地SQL Server:配置公网IP(需在路由器上完成1433端口转发,SQL Server默认端口)
    • 若使用云SQL Server(如Azure SQL、AWS RDS):直接使用服务商提供的公网服务器地址/域名
  • 确保SQL Server的防火墙规则允许Vercel服务访问,测试阶段可临时开放所有IP,生产环境建议限制指定IP段

2. 调整连接字符串的加密设置

如果使用云SQL Server(如Azure),当前encrypt: false的配置可能不符合服务商要求,修改为:

options: {
  encrypt: true, // 云SQL服务通常强制要求加密连接
  trustServerCertificate: false // 生产环境建议禁用此选项,使用正规CA证书
}

本地环境可保留encrypt: false,但部署到Vercel时必须匹配SQL Server的实际安全配置。

3. 验证Vercel环境变量加载正确性

  • 登录Vercel控制台,进入项目→Settings→Environment Variables
  • 逐一检查DB_USER、DB_PASSWORD、SERVER_NAME、DB_NAME的拼写和值,确保无多余空格、大小写错误
  • 修改后重新部署项目,确保环境变量生效

4. 优化连接池适配无服务器环境

Vercel的API路由是无服务器函数,存在冷启动特性,调整连接池配置适配该环境:

pool: {
  max: 5, // 降低最大连接数,避免无服务器环境资源耗尽
  min: 0,
  idleTimeoutMillis: 10000, // 缩短空闲连接超时时间
  acquireTimeoutMillis: 10000 // 增加连接获取超时时间,减少请求失败概率
}

5. 添加连接重试机制

在dbConnect函数中增加重试逻辑,应对临时网络波动:

const dbConnect = async (retries = 3) => {
  if (connectionPool) return connectionPool;
  
  try {
    connectionPool = await sql.connect(connectionString);
    console.log("Connected successfully to the database");
    return connectionPool;
  } catch (error) {
    console.error("Database connection failed:", error.message);
    if (retries > 0) {
      console.log(`Retrying connection... ${retries} attempts left`);
      connectionPool = null; // 重试前清空无效连接池实例
      await new Promise(resolve => setTimeout(resolve, 1000));
      return dbConnect(retries - 1);
    }
    throw error;
  }
};

验证方法

部署修改后的代码后,查看Vercel函数日志:

  • 若出现Connected successfully to the database,说明连接正常
  • 若仍报错,优先排查SQL Server防火墙是否开放、账号密码是否正确等基础问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 14:29:51