我正在使用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