我正在使用Azure SQL數據庫(MS SQL Server的雲版本)開發Node.js-Express-EJS Web應用程序。我的Node.js本地應用程序將無法連接到Azure SQL數據庫
我嘗試使用SQL Server Management Studio首先在遠程Azure SQL數據庫上測試我的連接。首先,我將我的機器的IP設置爲允許在Azure SQL DB防火牆規則中。然後我能夠進入數據庫,創建並填充表格,並使用Management Studio進行查詢。
現在,我首先在本地有Node.js應用程序。但是,它似乎無法使用相同的憑據連接到遠程Azure SQL數據庫。
首先,我使用教程節點MSSQL:
/* Using node-mssql */
var sql = require('mssql');
router.get('/test/mssql', function(req, res, next) {
console.log('Testing node-mssql')
sql.connect("mssql://<username>:<password>@<server>.database.windows.net/<db>")
.then(function() {
new sql.Request()
.query('SELECT * FROM mytable')
.then(function(recordset) {
console.dir(recordset);
}).catch(function(err) {
console.log(err);
});
}).catch(function(err) {
console.log(err);
});
});
我只能從控制檯
'Testing node-mssql'
GET /contact/test/mssql - - ms - -
但沒有反應得到,似乎它永遠在等待,它沒甚至不會出錯。
同樣的事情發生時,我使用Sequelize.js
/* Using Sequelize.js */
var Sequelize = require('sequelize');
var sequelize = new Sequelize('<db>', '<username>', '<password>', {
host: '<mydb>.database.windows.net',
dialect: 'mssql',
pool: {
max: 5,
min: 0,
idle: 10000
},
});
router.get('/test/sequelize', function(req, res, next) {
console.log('Testing sequelize');
sequelize.authenticate()
.then(function(err) {
console.log('Connection has been established successfully');
})
.catch(function(err) {
console.log('Unable to connect to the database:', err);
});
});
結果:
Testing sequelize
GET /test/sequelize - - ms - -
下面是我使用的版本:
Node.js - 4.6.0
express - 4.14.0
mssql - 3.3.0
sequelize - 3.30.2
tedious - 1.14.0
(我不知道這與我連接WiFi有什麼關係嗎?但是不可能,因爲Management Studio工作正常嗎?)
首先檢查SQL Azure和連接問題是防火牆打開到客戶端的IP地址。 – MikeS
@MikeS這就是我所做的。 My Management Studio連接到Azure SQL DB正在工作。在啓動我的Node.js應用程序的同一臺機器上。 – menorah84
您是否嘗試在代碼中提供端口號? – MikeS