簡體   English   中英

無法使用 Node.js、mssql 和 express 連接到 Microsoft SQL Server

[英]Unable to connect to Microsoft SQL Server using Node.js,mssql and express

我正在嘗試學習 Node.js 並創建了一個簡單的項目來查詢本地數據庫。 但是我無法查找實例錯誤消息。

我檢查了在 services.msc 中運行的 SQL Server 服務

服務.msc圖片

我已驗證 TCP/IP 已啟用

配置管理圖片

我試過使用用戶名和密碼,也試過不使用它。 我在 SQL Server Management Studio 中以(localdb)\\v11.0連接到 localdb,以下是屬性的屏幕截圖

SQL Server 連接屬性的圖像

我做錯了什么? 實際的用戶名和密碼應該是什么? 服務器名應該是什么?

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: Failed to lookup instance on (localdb) - getaddrinfo ENOTFOUND (localdb) at Connection.tedious.once.err (C:\\Users\\vndbsubramaniam\\Desktop\\React projects\\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 projects\\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 projects\\ReactWithSql\\node_modules\\tedious\\lib\\sender.js:43:16) 在 GetAddrInfoReqWrap.onlookupall [作為 oncomplete] (dns.js:70: 17) 代碼:'EINSTLOOKUP', originalError: { ConnectionError: Failed to lookup instance on (localdb) - getaddrinfo ENOTFOUND (localdb) at ConnectionError (C:\\Users\\vndbsubramaniam\\Desktop\\React projects\\Reac tWithSql\\node_modules\\tedious\\lib\\errors.js:13:12) 在 InstanceLookup.instanceLookup (C:\\Users\\vndbsubramaniam\\Desktop\\React projects\\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 projects\\ReactWithSql\\node_modules\\tedious\\lib\\sender.js:43:16) 在 GetAddrInfoReqWrap.onlookupall [as oncomplete] (dns.js:70:17) 消息:'無法在 (localdb) 上查找實例 - getaddrinfo ENOTFOUND (localdb)', code: 'EINSTLOOKUP' }, name: 'ConnectionError' } 數據庫連接錯誤

在這個問題上掙扎了幾個小時后終於在這里找到了SQL 到節點連接的答案

看來我必須添加 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');    

});

您將需要 msnodesqlv8 驅動程序,您必須將其粘貼到 require 中

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

以及您必須將其包含在配置對象的驅動程序部分中。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM