Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Sequelize连接到MSSQL服务器_Javascript_Sql Server_Azure_Sequelize.js - Fatal编程技术网

Javascript 使用Sequelize连接到MSSQL服务器

Javascript 使用Sequelize连接到MSSQL服务器,javascript,sql-server,azure,sequelize.js,Javascript,Sql Server,Azure,Sequelize.js,使用以下冗长的代码,我可以成功连接到Azure SQL Server const Connection = require('tedious').Connection; const connection = new Connection({ userName: '[USER]', password: '[PASSWORD]', server: '[HOSTNAME]', options: {encrypt: true} }); connection.on('c

使用以下冗长的代码,我可以成功连接到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

我尝试了您的sequelize代码,效果很好。因此,您可能需要添加客户端IP地址,以允许访问Azure SQL Server。要执行此操作,请转到,单击所有资源,选择您的SQL server,单击设置菜单中的防火墙


您的客户端地址方便地包含在列表中,因此您只需单击添加客户端IP,然后单击保存即可。当您现在运行代码时,它应该会连接。

如果您正在使用Azure SQL数据库进行尝试,您可能还需要指定更长的请求超时值:

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

我犯了错误

SequelizeConnectionError:服务器需要加密,请将“加密”配置选项设置为true。

我用Azure SQL数据库试用了它,下面的方法对我有效

const sequelize = new Sequelize('DB Name', 'Username', 'Password', {
    host: 'Host',
    dialect: 'mssql',
    dialectOptions: {
        options: {
            encrypt: true,
        }
    }
  });

我的客户端IP已经添加到防火墙白名单中,这就是繁琐的代码直接连接的方式。我感到困惑的是,为什么冗长的代码连接正确,而Sequelize只是使用冗长的代码进行连接,而Sequelize代码却不正确。