我在node.js中使用快速固件来连接到SQL Server并执行SP。 我有一个SP,它执行的时间比快速默认配置中定义的时间还要长。我收到错误消息:“超时:请求未能在15000毫秒内完成”。 我想在执行此SP时为该SP定义一个较长的超时,该怎么做? 这是我的代码:
const express = require('express');
const router = express.Router();
const config = require('../../config');
const sql = require('mssql');
const db = require('../../modules/db')({
connectionString: config.connectionString
});
const GetData = (params) => {
return new Promise((resolve, reject) => {
db.connect().then((pool) => {
return pool.request()
.input(<input param for the SP>),
.execute(<SP name>);
}).then((data) => {
resolve(data);
}).catch((error) => {
reject(error);
}).then(() => { })
});
};
router.use("<path>", <middleware function>, (req, res, next) => {
return GetData(req.body).then((dataResult) => {
res.status(200).json(dataResult);
}).catch((err) => {
next({
details: err
})
);
});
答案 0 :(得分:0)
在我的情况下,我找到了一种在数据库连接的配置中设置它的方法(requestTimeout),并且在执行查询后失败\失败-从配置中删除该属性-这样,默认值将再次处于活动状态。查看我的代码:
const GetData = (params) => {
return new Promise((resolve, reject) => {
db.options.connectionString.requestTimeout = <dedicated value>;
db.connect().then((pool) => {
return pool.request()
.input(<input param for the SP>),
.execute(<SP name>);
}).then((data) => {
resolve(data);
delete db.options.connectionString.requestTimeout;
}).catch((error) => {
reject(error);
}).then(() => { delete db.options.connectionString.requestTimeout; })
});
};