【问题标题】:Node.js Connection with SQL Server windows authenticationNode.js 与 SQL Server Windows 身份验证的连接
【发布时间】:2017-11-18 11:10:56
【问题描述】:

我正在尝试在 Windows 身份验证模式下将 node.js 连接到 mssql。我安装了tediousmssqlmsnodesqlv8 模块,但我仍然不知道如何打开连接。

这是我尝试过的:

    var sql = require('mssql');
    var config = {
    driver: 'msnodesqlv8',
    server: 'POPPY-GI\\SQLEXPRESS',
    database: 'NodinSports',
    options:{
    trustedConnection: true,
    useUTC: true}}

    sql.connect(config).then(function() { 
    new sql.Request().query('select * from users')
    .then(function(recordset){
    console.log(recordset);
    }).catch(function(err) {
    console.log(err);});
    }).catch(function(err) {
    console.log(err);});

运行后我收到一个很长的错误提示:

    `ConnectionError`: Port for `SQLEXPRESS` not found in 
 `ServerName`;POPPYGI;`InstanceName;SQLEXPRESS;IsClustered`;No;Version;12.0.2000.8;;

    at Connection.tedious.once.err (D:\Never Lazy\University\`AN2, SEM 2\WEB\`Projek`\node_modules\`mssql`\lib\`tedious.js:216:17`)

    at Connection.g (events.js:291:16)
    at emitOne (events.js:96:13)
    at Connection.emit (events.js:188:7)
    at D:\Never Lazy\University\AN2,SEM2\WEB\Projekt\node_modules\tedious\lib\connection.js:570:27
    at D:\Never Lazy\University\AN2,SEM2\WEB\Projekt\node_modules\tedious\lib\instance-lookup.js:91:24
    at Socket.onMessage (D:\Never Lazy\University\AN2,SEM2\WEB\Projekt\node_modules\tedious\lib\sender.js:140:9)
    at emitTwo (events.js:106:13)
    at Socket.emit (events.js:191:7)
    at UDP.onMessage (dgram.js:549:8)
    code: 'EINSTLOOKUP',

如果能提供任何帮助,我将不胜感激。

已修复:

services.msc 中检查以下是否启用:

SQL Server(*server_name*) -- in my case `SQLEXPRESS`
SQL Server Browser
SQL Server Agent(*server_name*) -- if you are using `SQLEXPRESS` this doesn't need to run

在 SQL Server 配置管理器中 -> server_name 的协议:启用 TCP/IP

为确保一切正常,请检查服务器正在使用的端口(SQL Server 配置管理器 -> SQL Native Client 配置 -> 客户端协议 -> 双击 TCP/IP ->默认端口 ) ,并将port: *your_port* 添加到var config = { ... } 中的代码中。

最后,将var sql = require('mssql'); 更改为var sql = require("mssql/msnodesqlv8");

【问题讨论】:

  • POPPYGI 是远程服务器吗? SQL Browser 服务是否正在运行?您可以使用 SSMS 连接到此实例吗?服务实际使用的是什么端口(SQL 日志会告诉你)?
  • 本地服务器,SQL Browser 服务正在运行,端口为 1433。我不太明白“使用 SSMS 连接到此实例”是什么意思。我将端口:1433 添加到“配置”中,现在我收到一条错误消息:ConnectionError: Login failed for user ' '. [...]
  • 感谢您的帮助,问题已解决。 ^_^
  • 如果你解决了你的问题,you can answer your own question!这也会将其从未应答队列中删除。

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


【解决方案1】:

安装以下模块:

"dependencies": {
    "msnodesqlv8": "^0.4.14",
    "mssql": "^4.1.0"
  }

我的节点版本:v8.1.4

const sql = require("mssql/msnodesqlv8");

const main = async () => {
  const pool = new sql.ConnectionPool({
    server: "myservername",
    database: "mydbname",
    options: {
      trustedConnection: true
    }
  });

  await pool.connect();

  const request = new sql.Request(pool);

  const query = `SELECT [FirstName]
    ,[LastName]
    ,[Email]
FROM [Dev].[Users]`;

  const result = await request.query(query);

  console.dir(result);
};
main();

(你可以在没有异步或旧版本的情况下做到这一点:https://stackoverflow.com/a/40406998/639575

【讨论】:

  • 如果我没记错的话,msnodesqlv8只能在Windows上运行……在其他平台上怎么办?
  • 上一个节点版本的软件包版本做得很好!
【解决方案2】:

beatoss 给出的解决方案适用于 windows,但不适用于 Linux/mac。 msnodesqlv8 驱动程序仅适用于 Windows。对于 Linux/mac 环境,请改用odbc

【讨论】:

  • 嘿,你的答案应该是针对问题而不是一般问题,不过你可以编辑你的答案。
【解决方案3】:

现在回答可能为时已晚,但这件事最近发生在我身上,让我发疯了!!!我试图将我的数据库连接到 express 并且我正在使用 Windows 身份验证模式。两天来,我一直在谷歌上搜索和刷新,直到我得到这篇文章:https://www.liquidweb.com/kb/troubleshooting-microsoft-sql-server-error-18456-login-failed-user/
简而言之;
首先我安装了msnodesqlv8驱动程序进行windows身份验证,然后在我的ssms服务器上,我右键单击我的服务器,然后在属性和安全中,我启用了sql server和windows身份验证模式,然后在对象资源管理器中,点击服务器旁边的加号,然后是安全性,然后是登录。在那里我看到sa 旁边有一个十字架。在它的属性中,我将密码更改为更容易记住的密码(可选),然后在状态中,将登录设置为启用。呸!
现在我的配置代码:

const config = {
user: 'sa',
password: '123',
driver: "msnodesqlv8",
server: 'UZAIR-S_PC\\SQLEXPRESS',
database: 'LearningExpressJS',
options: {
    trustedconnection: true,
    enableArithAbort : true, 
    trustServerCertificate: true,
    instancename : 'SQLEXPRESS'
},
port: 58018

}

终于成功了!!!!!!!!!!!!!!!

【讨论】:

    猜你喜欢
    • 2020-10-06
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多