Search code examples
node.jsazureiistedious

Unable to use tedious with Azure database


I've a node application which do have a connection to SQL Server.
Also, I'm using database as a service from Azure.

Code Snippet :

import { Connection } from 'tedious';  
import { Request } from 'tedious';  

var config = {  
    userName: 'dbuser',  
    password: 'dbpassword',  
    server: 'mydatabase.database.windows.net',  
    options: {  
        instanceName: 'SQLEXPRESS', // Removed this line while deploying it on server as it has no instance.  
        database: 'dbname'  
    }  
};  

connection = new Connection(config);  

connection.on('connect', function(err) {  
    if (err) {  
        console.log('error : '+err);  
    } else {  
        console.log("Connected to Database");  
    }  
});  

It has a successful connection, if done, locally.
Console Output => Connected to Database.

Deep dive done using console log :

-> Connection object is being created, but, the event ".on" is not being able to establish.
-> The connection gets established when deployed locally, while, when deployed on server, it doesn't works.


Solution

  • Based on the documentation here, you need to provide an additional option for encrypted connection.

    Please try the following for config:

    var config = {  
        userName: 'dbuser',  
        password: 'dbpassword',  
        server: 'mydatabase.database.windows.net',  
        options: {  
            database: 'dbname',
            encrypt: true //Need to add this for connecting to Azure DB  
        }  
    };  
    

    Using this configuration, I was able to connect to my database hosted in Azure.