Соединение с SQL Server не работает в проекте node.js, который я загрузил в heroku - PullRequest
0 голосов
/ 17 апреля 2019

Я хочу получить доступ к 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')
      }
});
  1. Очевидно, что этот исходный код успешно работает на моем ПК для разработки, но не работает на сервере Heroku.
  2. Я назначил те же условия доступа через брандмауэр для ПК для разработки иСервер Heroku в MS Server.
  3. Я попробовал Telnet с Heroku на SQL Server, и мне удалось и подтвердил, что брандмауэр настроен нормально.

Мои версии lib на heroku

  • node-mssql: 5.0.5
  • tedious / nodemssql: 6.1.0
  • Node.js: v10.15.3 (linux x64)

Пожалуйста, ответьте даже на небольшую возможность.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...