【问题标题】:node.js is not connecting to SQL Server database using SQL Server authenticationnode.js 未使用 SQL Server 身份验证连接到 SQL Server 数据库
【发布时间】:2019-09-10 05:03:10
【问题描述】:

我正在使用 node.js 和 mssql 包通过 SQL Server 身份验证连接到 SQL Server 数据库。当我尝试使用具有相同凭据的 SQL Server Management Studio 进行连接时,它工作正常。但是,使用 node.js,我无法登录并获得错误代码 ELOGIN 并出现连接错误。

我已经尝试了许多在 google 中显示的示例,但我也遇到了同样的问题。 让我知道我错过了什么。这是我的sn-p代码。

代码从这里开始

var sql = require('mssql');
var config = {
  server: 'scaXXXXXXXXXXXX',
  database: 'scaXXXXXXXXXX',
  user: 'svcXXXXXXX',
  password: 'Password',
  port: 1433
};

function listProducts() {
  var conn = new sql.ConnectionPool(config);
  conn.connect().then(function () {
  var request = new sql.Request(conn);
  request.query("select top 1 * from dbo.Persons").then(function 
  (recordSet) {
        console.log(recordSet);
        conn.close();
    }).catch(function (err) {
        console.log(err);
        conn.close();
    });
   }).catch(function (err) {
    console.log(err);
   });
 }

listProducts();

这是运行此代码时的错误:

ConnectionError:用户“svcXXXXXXX”登录失败。

在 Connection.tedious.once.err (C:\aws\node_modules\mssql\lib\tedious.js:244:17)
在 Object.onceWrapper (events.js:277:13)
在 Connection.emit (events.js:189:13)
在 Connection.processLogin7Response (C:\aws\node_modules\tedious\lib\connection.js:1397:14)
在 Connection.message (C:\aws\node_modules\tedious\lib\connection.js:1932:14)
在 Connection.dispatchEvent (C:\aws\node_modules\tedious\lib\connection.js:1084:36)
在 MessageIO.messageIo.on (C:\aws\node_modules\tedious\lib\connection.js:984:14)
在 MessageIO.emit (events.js:189:13)
在 Message.message.on (C:\aws\node_modules\tedious\lib\message-io.js:32:14)
在 Message.emit (events.js:194:15)

代码:'ELOGIN',
originalError: { ConnectionError: Login failed for user 'svcXXXXXX'.
在 ConnectionError (C:\aws\node_modules\tedious\lib\errors.js:13:12)
在 Parser.tokenStreamParser.on.token (C:\aws\node_modules\tedious\lib\connection.js:735:29)
在 Parser.emit (events.js:189:13)
在 Parser.parser.on.token (C:\aws\node_modules\tedious\lib\token\token-stream-parser.js:27:14)
在 Parser.emit (events.js:189:13)
在 addChunk (C:\aws\node_modules\可读流\lib_stream_readable.js:297:12)
在 readableAddChunk (C:\aws\node_modules\readable-stream\lib_stream_readable.js:279:11)
在 Parser.Readable.push (C:\aws\node_modules\可读流\lib_stream_readable.js:240:10)
在 Parser.Transform.push (C:\aws\node_modules\可读流\lib_stream_transform.js:139:32)
在 doneParsing (C:\aws\node_modules\tedious\lib\token\stream-parser.js:80:14)

消息:“用户 \'svcXXXXXXX\'登录失败。',
代码:'ELOGIN' },名称:'ConnectionError' }

我希望从数据库中提取并显示一条记录。

【问题讨论】:

  • 我有同样的连接问题,凭据已经过验证,我能够使用它们通过 sqlcmd 连接到同一个 mssql 实例

标签: node.js sql-server sql-server-authentication


【解决方案1】:

您的登录信息看起来不正确。 你写了正确的用户名和密码吗?

如果您的登录信息正确,则检查登录信息是否有权从外部环境连接

【讨论】:

    【解决方案2】:

    试试这个。它对我有用。如果您不使用本地主机数据库,则需要在该网络中。确保您可以 ping 数据库服务器。

    var sql = require("mssql");
    var moment = require("moment");
    let port = process.env.PORT;
    if (port == null || port == "") {
        port = 8000;
    }
    
    var config = {
        user: "xxxx",
        password: "xxxxx",
        server: "xxxxxx",
        database: "xxxx"
    };
    
    const dbconn = sql.connect(config, err => {
        if (!err) {
            console.log("Connected to the database");
        } else {
            console.log("Problem in connecting to database");
            console.log(err);
            console.log("testing ");
        }
    });
    
    app.get("/getSummaryDetails", (req, res) => {
        dbconn.query("exec QCGrid", (err, rows, fields) => {
            if (!err) {
                res.send(rows.recordsets[0]);
            }
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-18
      相关资源
      最近更新 更多