gpt4 book ai didi

node.js - 我的 Node.js 本地应用程序无法连接到 Azure SQL DB

转载 作者:行者123 更新时间:2023-12-03 22:23:51 24 4
gpt4 key购买 nike

我正在使用 Azure SQL DB(MS SQL Server 的云版本)开发 Node.js-Express-EJS Web 应用程序。

我尝试首先使用 SQL Server Management Studio 在远程 Azure SQL DB 上测试我的连接。首先,我将计算机的 IP 设置为在 Azure SQL DB 防火墙规则中允许。然后我就能够进入数据库,创建和填充表,并使用 Management Studio 进行查询。

现在,我首先在本地安装了 Node.js 应用程序。但是,它似乎无法使用相同的凭据连接到远程 Azure SQL DB。

首先,我在node-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 工作正常,对吗?)

最佳答案

如果您要使用 Azure SQL 数据库进行尝试,则需要将 ?encrypt=true 添加到连接字符串中,如下所示:

mssql://<username>:<password>@<server>.database.windows.net/<db>?encrypt=true

对于Sequelize.js,您需要这样:dialectOptions: { encrypt: true }。代码如下所示:

var sequelize = new Sequelize('<db>', '<username>', '<password>', {
host: '<mydb>.database.windows.net',
dialect: 'mssql',

// Use this if you're on Windows Azure
dialectOptions: {
encrypt: true
},

pool: {
max: 5,
min: 0,
idle: 10000
},

});

关于node.js - 我的 Node.js 本地应用程序无法连接到 Azure SQL DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42160862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com