2017-01-24 3 views
0

Mit dem folgenden mühsamen Code kann ich erfolgreich eine Verbindung zu einem Azure SQL Server herstellen.Verbinden mit MSSQL-Server mit Sequelize

const Connection = require('tedious').Connection; 

const connection = new Connection({ 
    userName: '[USER]', 
    password: '[PASSWORD]', 
    server: '[HOSTNAME]', 
    options: {encrypt: true} 
}); 

connection.on('connect', (err) => { 
    if (err) { 
     console.log('error connecting', err); 
    } else { 
     console.log('connection successful'); 
    } 
}); 

Allerdings, mit was sollte der äquivalente Sequelize-Code sein, bekomme ich eine Verbindung Timeout-Fehler.

const Sequelize = require('sequelize'); 

const sequelize = new Sequelize('[DBNAME]', '[USER]', '[PASSWORD]', { 
    dialect: 'mssql', 
    host: '[HOSTNAME]', 
    dialectOptions: { 
     encrypt: true 
    } 
}); 

sequelize.authenticate().then((err) => { 
    console.log('Connection successful', err); 
}) 
.catch((err) => { 
    console.log('Unable to connect to database', err); 
}); 

Irgendwelche Gedanken?

Verwendung: sequelize 3.29.0, 1.14.0 mühsam, SQL Server v12

Antwort

0

Ich habe versucht, Ihre Sequelize-Code und es funktioniert gut. Daher müssen Sie möglicherweise Client-IP-Adresse hinzufügen, um den Zugriff auf Azure SQL Server zu ermöglichen. Um dies zu tun, gehen Sie auf die Azure portal, klicken Sie auf Alle Ressourcen, wählen Sie Ihren SQL-Server, klicken Sie auf Firewall im Menü SETTINGS.

enter image description here

Ihre Client-Adresse wird in der Liste bequem enthalten, so dass Sie nur auf Client-IP- von Speicher gefolgt hinzufügen klicken. Wenn Sie Ihren Code jetzt ausführen, sollte er eine Verbindung herstellen.

+0

ist mein Client-IP die Firewall Weiße Liste bereits hinzugefügt, das ist, wie die Tedious Code verbindet sich direkt. Meine Verwirrung kommt davon, warum der Tedious-Code richtig verbunden ist, aber der Sequelize-Code ist nicht, wenn Sequelize nur Tedious verwendet, um eine Verbindung herzustellen. –

1

Wenn Sie es heraus mit Azure SQL-Datenbank sind versuchen, mögen Sie vielleicht auch einen längeren Anfrage Timeout-Wert angeben:

[...] 
dialectOptions: { 
    requestTimeout: 30000 // timeout = 30 seconds 
} 
[...]