Node js: mssql [ConnectionError: Connection is closed.] name: 'ConnectionError', message: 'Connection is closed.', code: 'ECONNCLOSED' Node js: mssql [ConnectionError: Connection is closed.] name: 'ConnectionError', message: 'Connection is closed.', code: 'ECONNCLOSED' express express

Node js: mssql [ConnectionError: Connection is closed.] name: 'ConnectionError', message: 'Connection is closed.', code: 'ECONNCLOSED'


I know it is an old questionm but this answer is for the others who are facing the same isue. I had the same problem, What I did is, used promises as below.

    function getData() {    try {        sqlInstance.connect(setUp)            .then(function () {                // Function to retrieve all the data - Start                new sqlInstance.Request()                    .query("select * from Course")                    .then(function (dbData) {                        if (dbData == null || dbData.length === 0)                            return;                        console.dir('All the courses');                        console.dir(dbData);                    })                    .catch(function (error) {                        console.dir(error);                    });                // Function to retrieve all the data - End                // To retrieve specicfic data - Start                var value = 1;                new sqlInstance.Request()                    .input("param", sqlInstance.Int, value)                    .query("select * from Course where CourseID = @param")                    .then(function (dbData) {                        if (dbData == null || dbData.length === 0)                            return;                        console.dir('Course with ID = 1');                        console.dir(dbData);                    })                    .catch(function (error) {                        console.dir(error);                    });                // To retrieve specicfic data - End            }).catch(function (error) {                console.dir(error);            });    } catch (error) {        console.dir(error);    }}

This solved my issue. You can find the fix here.


You should remove

        options: {            encrypt: true        }

from your dbConfig


I just use promise to handle concurrent request:

const executeQuery = function (res, query, dbName) {    dbConfig = {        user: "********",        password: "********",        server: "*******",        database: dbName    }    sql.connect(dbConfig).then(pool => {        return pool.request().query(query)    }).then(result => {        res.send(result);        }).catch(err => {            res.send(err);    });}

Hope it's help someone.