2017-01-24 3 views
0

Используя следующий утомительный код, я могу успешно подключиться к Azure SQL Server.Подключение к серверу MSSQL с Sequelize

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, утомительный v12 SQL Server

ответ

0

Я попробовал код Sequelize, и он отлично работает. Поэтому вам может потребоваться добавить IP-адрес клиента, чтобы разрешить доступ к Azure SQL Server. Для этого перейдите на страницу Azure portal, нажмите Все ресурсы, выберите ваш сервер SQL, нажмите Брандмауэр в меню НАСТРОЙКИ.

enter image description here

Ваш адрес клиента удобно включен в список, так что вы можете просто нажать на Добавить клиента IP следуют Сохранить. Когда вы запускаете свой код сейчас, он должен подключиться.

+0

Мой клиент IP уже добавлен в список исключений брандмауэра, который, как Утомительная код подключается напрямую. Меня смущает причина того, почему код Tedious правильно подключается, но код Sequelize не является, когда Sequelize просто использует Tedious для подключения. –

1

Если вы пытаетесь его с Azure SQL базы данных, вы также можете задать большее значение тайм-аут запроса:

[...] 
dialectOptions: { 
    requestTimeout: 30000 // timeout = 30 seconds 
} 
[...] 
Смежные вопросы