node.js не подключается к базе данных SQL Server с использованием проверки подлинности SQL Server

#node.js #sql-server #sql-server-authentication

#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();
  

Это ошибка при выполнении этого кода:

Ошибка подключения: ошибка входа для пользователя ‘svcXXXXXXX’.

при подключении.tedious.once.err (C:awsnode_modulesmssqllibtedious.js:244:17 )
в Object.onceWrapper (events.js:277:13)
при подключении.emit (events.js:189:13)
при подключении.processLogin7Response (C:awsnode_modulestediouslibconnection.js:1397:14 )
при подключении.сообщение (C:awsnode_modulestediouslibconnection.js:1932:14 )
при подключении.dispatchEvent (C:awsnode_modulestediouslibconnection.js:1084:36 )
в MessageIO.messageIo.on (C:awsnode_modulestediouslibconnection.js:984:14 )
в MessageIO.emit (events.js:189:13)
в Message.message.on (C:awsnode_modulestediouslibmessage-io.js:32:14 )
в Message.emit (события.js:194:15)

код: ‘ELOGIN’,
originalError: {Ошибка подключения: ошибка входа для пользователя ‘svcXXXXXXX’.
при ConnectionError (C:awsnode_modulestediousliberrors.js:13:12 )
в Parser.tokenStreamParser.on.token (C:awsnode_modulestediouslibconnection.js:735:29 )
в Parser.emit (events.js:189:13)
в Parser.parser.on.token (C:awsnode_modulestediouslibtokentoken-stream-parser.js:27:14 )
в Parser.emit (events.js:189:13)
в addChunk (C:awsnode_modulesreadable-streamlib_stream_readable.js:297:12 )
в readableAddChunk(C:awsnode_modulesreadable-streamlib_stream_readable.js:279:11 )
в синтаксическом анализаторе.Readable.push (C:awsnode_modulesreadable-streamlib_stream_readable.js:240:10 )
в синтаксическом анализаторе.Transform.push (C:awsnode_modulesreadable-streamlib_stream_transform.js:139:32 )
при выполнении анализа (C:awsnode_modulestediouslibtokenstream-parser.js:80:14 )

сообщение: «Ошибка входа в систему для пользователя «svcXXXXXXX».’,
код: ‘ELOGIN’ }, имя: ‘ConnectionError’ }

Я ожидаю, что одна запись из базы данных должна быть извлечена и отображена.

Комментарии:

1. У меня такая же проблема с подключением, учетные данные были проверены, и я смог использовать их для подключения к тому же экземпляру mssql с использованием sqlcmd

Ответ №1:

похоже, ваша регистрационная информация неверна. вы написали правильное имя пользователя и пароль?

если ваша информация для входа верна, проверьте, что информация для входа имеет право на подключение из внешней среды

Ответ №2:

Попробуйте это. Это сработало для меня. Если вы не работаете с базой данных localhost, вам необходимо находиться в этой сети. Убедитесь, что вы можете пинговать сервер базы данных.

 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]);
        }
    });
});