I have a nodejs Rest API calling my on-prem SQL Server. It is hosted on Azure and connected to my SQL server using an Azure Hybrid Connection. All runs as expected on my local machine, but on Azure I'm getting a ConnectionClosed error (ECONNCLOSED) when I attempt to call the Test route below:
Here is my code sample:
var express = require('express');
var app = express();
var sql = require('mssql/msnodesqlv8');
// Connection string parameters.
var sqlConfig = {
user: 'restapi', //remove if using Windows Auth
password: 'restapi', //remove if using Windows Auth
database: 'dbname',
server: 'server\\instance',
driver: 'msnodesqlv8',
options: {
encrypt: true
}
}
var server = app.listen(process.env.PORT || 8081, function () {
var host = server.address().address
var port = server.address().port
console.log("app listening at http://%s:%s", host, port)
});
app.get('/', function(req, res) {
res.json({"message": "Welcome to the API"});
});
app.get('/Test', function (req, res) {
sql.connect(sqlConfig, function() {
var request = new sql.Request();
request.query("select 1 as number") //query
.then(result => {
let rows = result.recordset //first recordset
res.setHeader('Access-Control-Allow-Origin', '*')
res.status(200).json(rows);
sql.close();
}).catch(err => {
console.log(err);
res.status(500).send({
message: err
})
sql.close();
});
})
});
Any ideas?