2017-01-24 365 views
0

使用以下繁琐的代码,我可以成功连接到Azure SQL Server。使用Sequelize连接到MSSQL服务器

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

我试过你的Sequelize代码,它工作正常。因此,您可能需要添加客户端IP地址以允许访问Azure SQL Server。为此,请转至Azure portal,单击所有资源,选择您的SQL服务器,单击防火墙中的设置菜单。

enter image description here

您的客户端地址方便地包括在列表中,这样你就可以直接点击添加客户端IP其次保存。当你现在运行你的代码时,它应该连接。

+0

我的客户端IP已经被添加到防火墙白名单,这是多么乏味代码直接连接。我的困惑来自为什么Tedious代码正确连接,但Sequelize代码不是当Sequelize仅使用Tedious来连接时。 –

1

如果你想它与SQL Azure的数据库,你可能还需要指定一个较长的请求超时值:

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