【问题标题】:Unable to connect to Microsoft SQL Server using Node.js,mssql and express无法使用 Node.js、mssql 和 express 连接到 Microsoft SQL Server
【发布时间】:2019-09-02 14:32:53
【问题描述】:

我正在尝试学习 Node.js,并创建了一个简单的项目来查询本地数据库。但我无法查找实例错误消息。

我检查了在 services.msc 中运行的 SQL Server 服务

我已验证 TCP/IP 已启用

我已经尝试过使用用户名和密码,也没有使用它。我以(localdb)\v11.0 身份连接到 SQL Server Management Studio 中的 localdb,下面是属性的屏幕截图

我做错了什么?实际的用户名和密码应该是什么?服务器名称应该是什么?

const sql = require('mssql');

// config for your database
const config = {
    user: 'mywindows username',
    password: 'my windows password',
    server: '(localdb)\\v11.0', 
    database: 'test',
    options: {
        encrypt: true
      } 
};
console.log('starting sql');

var connection = new sql.connect(config, function(err) {
    console.log(err);
    var request = new sql.Request(connection); 
    request.query('select * from employees', function(err, recordset) {
       if(err)      // ... error checks 
            console.log('Database connection error');

    console.dir("User Data: "+recordset);
    });
});
sql.close();
console.log('ending sql');    
});

app.listen(3002, () => {
    console.log('Listening on port 3002');})

下面是错误信息

{ ConnectionError: 无法在 (localdb) 上查找实例 - getaddrinfo ENOTFOUND (本地数据库) 在 Connection.tedious.once.err (C:\Users\vndbsubramaniam\Desktop\React 项目\ReactWithSql\node_modules\mssql\lib\tedious.js:244:17) 在 Object.onceWrapper (events.js:285:13) 在 Connection.emit (events.js:197:13) 在 InstanceLookup.instanceLookup (C:\Users\vndbsubramaniam\Desktop\React 项目\ReactWithSql\node_modules\tedious\lib\connection.js:945:16) 在 sender.execute (C:\Users\vndbsubramaniam\Desktop\React projects\ReactWithSql\node_modules\tedious\lib\instance-lookup.js:66:13) 在 GetAddrInfoReqWrap.invokeLookupAll [作为回调] (C:\Users\vndbsubramaniam\Desktop\React 项目\ReactWithSql\node_modules\tedious\lib\sender.js:43:16) 在 GetAddrInfoReqWrap.onlookupall [as oncomplete] (dns.js:70:17) 代码:'EINSTLOOKUP',originalError: { ConnectionError: Failed to (localdb) 上的查找实例 - getaddrinfo ENOTFOUND (localdb) 在 ConnectionError (C:\Users\vndbsubramaniam\Desktop\React projects\ReactWithSql\node_modules\tedious\lib\errors.js:13:12) 在 InstanceLookup.instanceLookup (C:\Users\vndbsubramaniam\Desktop\React 项目\ReactWithSql\node_modules\tedious\lib\connection.js:945:32) 在 sender.execute (C:\Users\vndbsubramaniam\Desktop\React projects\ReactWithSql\node_modules\tedious\lib\instance-lookup.js:66:13) 在 GetAddrInfoReqWrap.invokeLookupAll [作为回调] (C:\Users\vndbsubramaniam\Desktop\React 项目\ReactWithSql\node_modules\tedious\lib\sender.js:43:16) 在 GetAddrInfoReqWrap.onlookupall [as oncomplete] (dns.js:70:17) 信息: '在 (localdb) 上查找实例失败 - getaddrinfo ENOTFOUND (localdb)', 代码:'EINSTLOOKUP'},名称:'ConnectionError'}数据库连接错误

【问题讨论】:

    标签: node.js sql-server


    【解决方案1】:

    在这个问题上挣扎了几个小时后终于在这里找到了答案SQL to Node connection

    看来我必须添加 msnodesqlv8 包并使用将驱动程序语法添加到配置中。

    app.get('/test', (req, res) => {
    
    const sql = require('mssql/msnodesqlv8');
    
    // config for your database
    const config = {
        database: 'test',
        server: '(localdb)\\v11.0',
        driver: 'msnodesqlv8',
        options : {
            trustedConnection : true
        }
    };
    console.log('starting sql');
    
    const pool = new sql.ConnectionPool(config);
    pool.connect().then(() => {
        //simple query
        pool.request().query('select * from employees', (err, result) => {
              if(err) res.send(err)
              else{
                  return res.json({
                      data : result.recordset
                  })
              }
          })
          sql.close();
    })    
    console.log('ending sql');    
    

    });

    【讨论】:

      【解决方案2】:

      您将需要 msnodesqlv8 驱动程序,您必须将其粘贴到 require as

      var sql = require('mssql/msnodesqlv8'),

      您必须将它包含在配置对象的驱动程序部分中。

      var config = {
          user:"*****",
          password:"*****",
          database:"*****",
          driver: 'msnodesqlv8',
          server:"*****",
          options: {
              trustedConnection : true
              }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-26
        • 2016-12-10
        • 1970-01-01
        • 2019-07-18
        相关资源
        最近更新 更多