2

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

我已经尝试了谷歌中显示的许多示例,但我面临着同样的问题。让我知道我错过了什么。这是我的代码片段。

代码从这里开始

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:用户“svcXXXXXXX”登录失败。
在 Parser.tokenStreamParser.on.token 处的 ConnectionError (C:\aws\node_modules\tedious\lib\errors.js:13:12)
(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。在 readableAddChunk
( C:\aws\node_modules\readable-stream\ lib_stream_readable.js
: 279:11)
在 Parser.Readable.push (C:\aws\node_modules\readable-stream\lib_stream_readable.js:240:10)
在 Parser.Transform.push (C:\aws\node_modules\readable-stream\lib_stream_transform.js:139:32)
在 doneParsing (C:\aws\node_modules\tedious\lib\token\stream-parser.js:80: 14)

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

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

4

2 回答 2

0

试试这个。它对我有用。如果您不使用本地主机数据库,则需要在该网络中。确保您可以 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]);
        }
    });
});
于 2020-01-02T16:05:51.587 回答
0

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

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

于 2019-04-20T06:13:02.883 回答