Nodejs的mssql出现ConnectionError: Login failed for user ' '。

8
这是我的代码:

var sql = require("mssql");

var dbConfig = {
server: "server",
username: "user",
password: "password",
database: "database"
};

function getEmp() {
var conn = new sql.Connection(dbConfig);
console.log(conn);
var req = new sql.Request(conn);
conn.connect(function (err) {
    if (err) {
        console.log(err);
        return;
    }
    req.query("SELECT * FROM Alg.User", function (err, recordset) {
        if (err) {
            console.log(err);
            return;
        }
        else {
            console.log(recordset);
        }
        conn.close();
    });
});
}

getEmp();

这是我记录的错误信息:

 { ConnectionError: Login failed for user ''.
at Connection.<anonymous> (c:\users\milan\documents\visual studio 2015\Projects\SampleSQLConn\SampleSQLConn\node_modules\mssql\lib\tedious.js:378:25)
at Connection.g (events.js:291:16)
at emitOne (events.js:96:13)
at Connection.emit (events.js:188:7)
at Connection.processLogin7Response (c:\users\milan\documents\visual studio 2015\Projects\SampleSQLConn\SampleSQLConn\node_modules\tedious\lib\connection.js:672:16)
at Connection.message (c:\users\milan\documents\visual studio 2015\Projects\SampleSQLConn\SampleSQLConn\node_modules\tedious\lib\connection.js:1082:21)
at Connection.dispatchEvent (c:\users\milan\documents\visual studio 2015\Projects\SampleSQLConn\SampleSQLConn\node_modules\tedious\lib\connection.js:519:45)
at MessageIO.<anonymous> (c:\users\milan\documents\visual studio 2015\Projects\SampleSQLConn\SampleSQLConn\node_modules\tedious\lib\connection.js:439:23)
at emitNone (events.js:86:13)
at MessageIO.emit (events.js:185:7)
name: 'ConnectionError',
message: 'Login failed for user \'\'.',
code: 'ELOGIN' }

有谁知道我做错了什么吗?看起来我的变量用户名没有放在连接字符串中?但我不知道为什么...

提前感谢!

解决方案:

问题在于在dbConfig中,用户名变量应该改为user!而且sql查询语句也是错误的,应该是[Alg].[User],因为'User'是一个关键字!

5个回答

9

使用 tedious / msnodesqlv8 driver 驱动程序可以在 Windows 上正常工作:

而不是:

var sql = require("mssql");

我把它改成了:
var sql = require("mssql/msnodesqlv8");

我没有硬编码用户名/密码。
这是我的dbconfig的样子:
var db_config = {
  driver: "msnodesqlv8",
  server: "ServerName",
  database: "databaseName",
  options: {
    trustedConnection: true,
    useUTC: true
  }
}

1
我收到了“找不到模块'msnodesqlv8'”的错误信息。 - AJ_
3
这个驱动程序仅适用于Windows!https://github.com/tediousjs/node-mssql#microsoft--contributors-node-v8-driver-for-nodejs-for-sql-server - Cabuxa.Mapache

6

1

对于谷歌的观众...

如果上述解决方案对您无效。您应该检查计算机服务中的SQL Server Browser是否正在运行,因为这是处理对服务器的请求的进程。

那个问题困扰了我一段时间


0

将dbConfig中的'username'更改为'user'


0

对于我来说,连接到 Azure SQL 数据库,这个问题通过将以下内容添加到我的 mssql.config 文件中得以解决。与 @shahreen 不同的是,我不需要指定特定的驱动程序。

options: {
    trustedConnection: true
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接