用nodejs 的mssql模块去执行存储过程,向数据库插入多条数据,这样就会多次去调用存储过程,可是那些数据有的还没插入数据库,连接就关闭了,咋办?
发布于 7 年前 作者 txxxj 5064 次浏览 来自 问答

用nodejs 的mssql模块去执行存储过程,每次会向数据库插入多条数据,这样就会多次调用存储过程,可是那些数据有的还没插入数据库,连接就关闭了,咋办?提示的错误:ConnectionError: Connection is closed.

var config={ user:‘sa’, password:‘xxxxx’, server:‘xxxx’, database:‘xxxx’, port:‘xxxx’, connectionTimeout:300000 }; 我的配置写这样,还需要添加什么吗? 加了个连接操时的时间,还是不行啊,以下是错误… ConnectionError: Connection is closed. at d:\Program Files\nodejs\node_global\node_modules\mssql\lib\main.js:1663:17 at nextTickCallbackWith0Args (node.js:420:9) at process._tickCallback (node.js:349:13)

6 回复

直接执行的时间就很长吗?

connection.connect(); connection.query(‘CALL 存储过程(1, @a, @b);’, function(err, rows, fields) { // do something }); connection.end(); // 在最后 一般就这样调,你的存储过程在数据库工具里执行要多久?存储过程有返回值吗?

@coolswitch 每调用一次存储过程所要花费的时间是3到6毫秒,存储过程有返回值…

用async来同步插入吧,这样一条失败了,记录一下就不继续往下插入了,然后又重头再试一遍。 要么就弄一个数组列队,插入成功后,从列队里把执行成功的值删除掉,如果中断链接了,就用列队数组里未插入的数据重新开始。

回到顶部