Работа с Nodejs + MSSQL в Ubuntu

У меня есть приложение nodejs, подключенное к серверу MSSQL, отлично работало на моем ноутбуке с Windows, спой mssql@npm

Это же приложение не может видеть базу данных на моем ноутбуке Ubuntu.

Я определил подключение mssql в Ubuntu, как показано ниже, я что-то упустил?

  1. Обновил мой ~/.profile, так как:
  ~$ export ODBCINI=/etc/odbc.ini
  ~$ export ODBCSYSINI=/etc
  ~$ export FREETDSCONF=/etc/freetds/freetds.conf
  1. Выключил ноутбук, чтобы активировать вышеуказанное, и профиль обновился.

  2. Установлены необходимые пакеты подключения.

  ~$ sudo apt-get install unixodbc unixodbc-dev freetds-dev sqsh tdsodbc -y
  1. Настроил FreeTDS
  ~$ sudo gedit /etc/freetds/freetds.conf

   [ACUMENSERVER]
   host = 192.168.0.10
   port = 1433
   tds version = 7.0
  1. Протестировано соединение FreeTDS с sqsh, и оно отлично работает:
  ~$ sqsh -S ACUMENSERVER -U mssql-username -P mssql-password
  1. Настроил ODBC - odbcinst.ini:
  ~$ sudo gedit /etc/odbcinst.ini

     [FreeTDS]
     Description     = TDS driver (Sybase/MS SQL)
     Driver          = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
     Setup           = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
     CPTimeout       =
     CPReuse         =
     FileUsage       = 1
  1. Настроил ODBC - odbc.ini:
~$ sudo gedit /etc/odbc.ini

   [ACUMENSERVER]
      Driver          = FreeTDS
      Description     = ODBC connection via FreeTDS
      Trace           = No
      Servername      = ACUMENSERVER
      Database        = myDataBase
  1. Протестировано ODBC-соединение с isql, и оно работает нормально:
isql -v ACUMENSERVER mssql-username mssql-passward

Когда я запускаю свое приложение nodejs (которое отлично работает в Windows), я обнаружил в Ubuntu ошибку ниже, учитывая, что все вышеперечисленное сделано, и проверил:

{ name: 'ConnectionError',
  message: 'Failed to connect to ACUMENSERVER:1433 - getaddrinfo ENOTFOUND',
  code: 'ESOCKET' }

Что может быть не так / отсутствует здесь, я открыт, чтобы использовать другой пакет npm для подключения mssql.

1 ответ

Решение

Я обнаружил, что это может работать, если используется IP-адрес сервера, имя сервера не работает!

ниже того, что работало со мной:

var sql = require('mssql');

var config = {
    user: 'sa',
    password: 'sql@123',
//  server: 'myServername',  --> Not Working
//  server: 'ACUMENSERVER',  --> Not Working
    server: '6192.168.0.10', // WORKED
    database: 'myDB'
}

sql.connect(config).then(function() { 
// Query 

new sql.Request().query('select top 1 itemcode from OITM').then(function(recordset) {
    console.dir(recordset);
    }).catch(function(err) {console.log(err); /* ... query error checks ... */ });


// Stored Procedure 

new sql.Request()
    .input('input_parameter', sql.Int, value)
    .output('output_parameter', sql.VarChar(50))
    .execute('procedure_name').then(function(recordset) {
         console.dir(recordset);
     }).catch(function(err) {console.log(err); /* ... execute error checks ... */ });



}).catch(function(err) {console.log(err); /* ... connect error checks ... */ });
Другие вопросы по тегам