Я хочу получить доступ к SQL Server с IP-адресом «118.40.xxx.xxx».Теперь я буду называть этот сервер «SQL Server».
Также у меня есть компьютер для разработки с IP-адресом «211.208.xxx.xxx».Я предоставил брандмауэру ПК для разработки доступ к SQL Server (с 211.208.xxx.xxx:1433 до 118.40.xxx.xxx:1433).
И я создал проект Nodejs, который может обращаться к SQL Server с использованием Node-mssql
и
Я подтвердил, что мой компьютер для разработки подключен к SQL Server.
И я загрузил этот проект node.js через heroku.
Мне был назначен статический IP-адресадрес '54 .84.xxx.xxx 'через Heroku Addon.Таким же образом я назначил этому ip то же право доступа брандмауэра, которое назначено моему ПК для разработки.(54.84.xxx.xxx:1433 до 118.40.xxx.xxx:1433)
Однако соединение из heroku (54.84.xxx.xxx:1433) с SQL Server (118.40.xxx.xxx:1433)) не удалось.
Не удалось подключиться к 118.40.xxx.xxx:1433 за 5000 мс
Я подумал, что это странно, и попытался подключиться к SQL Server через telnetсервер Heroku.
telnet 118.40.xxx.xxx 1433
запрос telnet выполнен успешно.
Это означает, что с настройками брандмауэра все в порядке.
Но, как я уже говорил, у меня не было проблем с запуском этогоИсходный код на моем ПК для разработки.
Это действительно сбивает с толку.Брандмауэр, похоже, также не имеет проблем, и исходный код, похоже, не имеет проблем.
Что мне нужно добавить при загрузке на heroku?
Вот исходный код, связанный смое соединение.
var sql = require('mssql')
var tedious = require('tedious')
var GET_USERNAME = req.body.USERNAME //'sa'
var GET_PASSWORD = req.body.PASSWORD //'saPW'
var GET_SERVER = req.body.SERVER //118.40.xxx.xxx
var GET_DATABASE = req.body.DATABASE //DBName
var config = {
authentication:{
type: "default",
options:{
userName: GET_USERNAME,
password: GET_PASSWORD
}
},
server: GET_SERVER,
database: GET_DATABASE,
port:1433
}
var Connection = tedious.Connection;
var connection = new Connection(config);
connection.on('connect', function(err) {
if(!err)
{
console.log("Success");
res.send('S')
}
else {
console.log("Fail");
console.log(err.message);
res.send('F')
}
});
- Очевидно, что этот исходный код успешно работает на моем ПК для разработки, но не работает на сервере Heroku.
- Я назначил те же условия доступа через брандмауэр для ПК для разработки иСервер Heroku в MS Server.
- Я попробовал Telnet с Heroku на SQL Server, и мне удалось и подтвердил, что брандмауэр настроен нормально.
Мои версии lib на heroku
- node-mssql: 5.0.5
- tedious / nodemssql: 6.1.0
- Node.js: v10.15.3 (linux x64)
Пожалуйста, ответьте даже на небольшую возможность.
Спасибо