MSSQL的NodeJS ConnectionError:用户登录失败'

问题描述:

这是我的代码:MSSQL的NodeJS ConnectionError:用户登录失败'

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,用户名变量应改为用户!而且sql查询也是错误的,它应该是[Alg]。[User],因为'User'是关键字!

这为我工作: 相反,我把它改成 var sql = require("mssql/msnodesqlv8");

我没有硬编码的用户名/密码的

var sql = require("mssql"); 

。 这里是我的DBCONFIG是什么样子:

var db_config = { 
       driver: "msnodesqlv8", 
       server: "ServerName", 
       database: "databaseName", 
       options: { 
       trustedConnection: true, 
       useUTC: true 
       } 
      } 

希望这可以帮助别人

+0

我得到找不到模块“msnodesqlv8” – John

对于谷歌的观众......

如果上述解决方案并不为你工作。您应该检查计算机服务中的SQL Server浏览器正在运行,因为这是将请求处理到服务器的过程。

那一个难倒我了一会儿

请“用户名”到配置“用户”。如果您尝试console.log(conn),您将看到该配置使用“user”而不是userName。

我已经回答了这个问题,请参考 SQL Server Error "[ConnectionError: Login failed for user '****'.] "while connecting SQL Server with Nodejs using MSSQL