使用以下繁琐的代码,我可以成功连接到Azure SQL Server。
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');
}
});
但是,使用什么应该是等效的Sequelize代码,我得到连接超时错误。
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);
});
有什么想法吗?
使用:sequelize 3.29.0,繁琐的1.14.0,SQL Server v12
答案 0 :(得分:3)
我遇到错误
SequelizeConnectionError: Server requires encryption, set 'encrypt' config option to true.
我使用Azure SQL数据库进行了尝试,以下方法对我有效。
const sequelize = new Sequelize('DB Name', 'Username', 'Password', {
host: 'Host',
dialect: 'mssql',
dialectOptions: {
options: {
encrypt: true,
}
}
});
答案 1 :(得分:2)
如果您正在尝试使用Azure SQL数据库,您可能还需要指定更长的请求超时值:
[...]
dialectOptions: {
requestTimeout: 30000 // timeout = 30 seconds
}
[...]
答案 2 :(得分:1)
请试试下面链接中给出的内容,它说你需要在dialectOptions中使用instanceName属性
https://manuel-rauber.com/2015/11/08/connect-to-ms-sql-using-node-js-and-sequelizejs/
答案 3 :(得分:0)
我尝试了你的Sequelize代码,它运行正常。因此,您可能需要添加客户端IP地址以允许访问Azure SQL Server。为此,请转到Azure portal,点击所有资源,选择您的SQL服务器,点击设置中的防火墙菜单。
您的客户地址方便地包含在列表中,因此您只需点击添加客户端IP ,然后点击保存即可。现在运行代码时,它应该连接。