NodeJS – SQL Server连接已closures

我试图从SQL Server调用注册存储过程。 我正在使用mssql包的mssql 。 我从mssql Npm文档中获得了大部分代码。 但它仍然不起作用。

代码基本上试图启动一个ConnectionPool作为读取的最后一个更新,重命名ConnectionPool ,创build一个新的请求,引入参数并执行存储过程。 我这样做是因为我需要偶尔将连接variables更改为另一个数据库。

我得到的错误是:

ConnectionError:连接已closures。

我的代码:

 const sql = require('mssql'); const config = require('../config/dbPoly'); module.exports.registerUser = function(pUserName, pPassword, pNombre, pApellidos, pFK_TipoUsuario, callback) { var connection = new sql.ConnectionPool(config); var request = new sql.Request(connection); request.input('input_parameter', sql.VARCHAR(25), pUserName); request.input('input_parameter', sql.VARCHAR(16), pPassword); request.input('input_parameter', sql.VARCHAR(25), pNombre); request.input('input_parameter', sql.VARCHAR(50), pApellidos); request.input('input_parameter', sql.Int, pFK_TipoUsuario); request.execute('RegistrarUsuario', (err, result)=>{ if(err){ console.log(err); } else{ console.log(result); } }); }; 

有这个asynchronous版本的实现。 检查这是否符合您的目的

 const sql = require('mssql'); const config = require('../config/dbPoly'); module.exports.registerUser = async function(pUserName, pPassword, pNombre, pApellidos, pFK_TipoUsuario) { try { let connection = await sql.connect(config) let result = await connection.request() .input('input_parameter', sql.VARCHAR(25), pUserName); .input('input_parameter', sql.VARCHAR(16), pPassword); .input('input_parameter', sql.VARCHAR(25), pNombre); .input('input_parameter', sql.VARCHAR(50), pApellidos); .input('input_parameter', sql.Int, pFK_TipoUsuario); .execute('RegistrarUsuario'); return result; } catch (err) { console.log(err); // ... error checks } }; sql.on('error', err => { // ... error handler }) 

如果别人面临这个问题,Prabodh的答案完美的作品。

然后我遇到了另一个问题,它说本地主机在1500毫秒内没有定义。 原因是因为我在jsonconfiguration文件中的服务器字段的格式如下:'localhost \ Server-Name'。 我改变它只是'本地主机'和问题修复。

另外请确保您的服务器启用了SQL身份validation,而不仅仅是Windows身份validation。