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

使用mssql库调用SQL Server长存储过程时超时问题求助

解决mssql调用长耗时存储过程的超时问题

针对你遇到的ETIMEOUT超时错误(15000ms),即使已配置requestTimeout仍不生效的情况,可按以下步骤排查解决:

  • 单独为Request实例设置超时
    全局连接配置中的requestTimeout可能未正确传递到底层tedious驱动,需显式为每个Request实例设置超时:

    const request = new sql.Request();
    request.timeout = 300000; // 300秒,与全局配置保持一致
    const result = await request.execute(STORED_PROC_DATA_VALIDATION);
    
  • 检查SQL Server端的远程查询超时设置
    错误中的15秒超时可能来自SQL Server本身的配置,而非Node.js端。执行以下SQL命令检查并修改:

    -- 查看当前远程查询超时设置(单位:秒)
    sp_configure 'remote query timeout';
    -- 如果值为15,修改为300秒(可按需调整)
    sp_configure 'remote query timeout', 300;
    RECONFIGURE;
    
  • 重置连接池
    若使用连接池,旧的连接实例可能未应用新的超时配置。可先关闭现有连接池,再重新建立连接:

    await sql.close(); // 先关闭所有连接
    await sql.connect({
      user: dbUser,
      password: dbPassword,
      server: dbServer,
      database: dbName,
      connectionTimeout: 300000,
      requestTimeout: 300000,
      pool: {
        idleTimeoutMillis: 300000,
        max: 100,
      },
    });
    
  • 验证依赖版本兼容性
    mssql与依赖的tedious版本不兼容可能导致配置失效,尝试升级mssql到最新稳定版:

    npm update mssql
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 02:24:53