使用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
相关产品推荐
相关产品推荐

