node.js未使用SQL Server身份验证连接到SQL Server数据库

时间:2019-04-20 03:48:38

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

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

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

代码从这里开始

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'登录失败。
  在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 \ ready-stream \ lib_stream_visible.js:297:12)
  在readAddChunk(C:\ aws \ node_modules \ ready-stream \ lib_stream_visible.js:279:11)
  在Parser.Readable.push(C:\ aws \ node_modules \ ready-stream \ lib_stream_visible.js:240:10)
  在Parser.Transform.push(C:\ aws \ node_modules \ read-stream \ lib_stream_transform.js:139:32)
  在doneParsing(C:\ aws \ node_modules \ tedious \ lib \ token \ stream-parser.js:80:14)

     

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

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

2 个答案:

答案 0 :(得分:0)

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

如果您的登录信息正确,那么签出登录信息具有从外部环境进行连接的权限

答案 1 :(得分: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]);
        }
    });
});