Sql server 与Nodejs和x2B合作;Linux/Ubuntu上的MSSQL

Sql server 与Nodejs和x2B合作;Linux/Ubuntu上的MSSQL,sql-server,node.js,ubuntu,freetds,unixodbc,Sql Server,Node.js,Ubuntu,Freetds,Unixodbc,我已经将我的nodejs应用程序连接到MSSQL服务器,在我的Windows笔记本电脑上运行良好,sing 同一个应用程序无法在我的Ubuntu笔记本电脑中看到数据库 我在Ubuntu中定义了mssql连接,如下所示,我遗漏了什么吗 更新了我的~/.profile,如下所示: 注销笔记本电脑,以激活上述内容,并刷新配置文件 已安装所需的连接包 配置的FreeTDS 使用sqsh测试FreeTDS连接,效果良好: 已配置的ODBC-odbcinst.ini: 已配置的ODBC-ODBC.ini:

我已经将我的nodejs应用程序连接到MSSQL服务器,在我的Windows笔记本电脑上运行良好,sing

同一个应用程序无法在我的Ubuntu笔记本电脑中看到数据库

我在Ubuntu中定义了mssql连接,如下所示,我遗漏了什么吗

  • 更新了我的~/.profile,如下所示:
  • 注销笔记本电脑,以激活上述内容,并刷新配置文件

  • 已安装所需的连接包

  • 配置的FreeTDS
  • 使用sqsh测试FreeTDS连接,效果良好:
  • 已配置的ODBC-odbcinst.ini:
  • 已配置的ODBC-ODBC.ini:
  • 使用isql测试了ODBC连接,效果良好:
  • 当我运行我的nodejs应用程序(在Windows中运行良好)时,我在Ubuntu中发现以下错误,考虑到以上所有操作都已完成,并进行了检查:

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

    这里可能有什么错误/遗漏的地方,我打开了另一个用于mssql连接的npm包。

    我发现如果使用了服务器的IP地址,服务器名称不工作,这可以工作

    以下是与我一起工作的内容:

    1安装mssql:

    npm install mssql
    
    2.index.js文件:

    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 ... */ });
    
    更新人

    您可能需要一个用于
    myServer
    的DNS解析器。。在windows之外,您将无法获得netbios名称解析。。。无论您将什么作为服务器名,如果您不能从命令提示符ping myserver,您将无法通过node连接

    然后:

    或者使用上面提到的IP(这意味着根本不需要安装ODBCunix或FreeTDS),或者使用本地网络的内部DNS并使用完整的ADS名称
    myserver.domain.name
    应该解析哪个(假设ADS用作本地解析的dns主机)

      ~$ sqsh -S ACUMENSERVER -U mssql-username -P mssql-password
    
      ~$ 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
    
    ~$ sudo gedit /etc/odbc.ini
    
       [ACUMENSERVER]
          Driver          = FreeTDS
          Description     = ODBC connection via FreeTDS
          Trace           = No
          Servername      = ACUMENSERVER
          Database        = myDataBase
    
    isql -v ACUMENSERVER mssql-username mssql-passward
    
    { name: 'ConnectionError',
      message: 'Failed to connect to ACUMENSERVER:1433 - getaddrinfo ENOTFOUND',
      code: 'ESOCKET' }
    
    npm install mssql
    
    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 ... */ });