Node.js与SQL Server Windows身份验证的连接

时间:2017-06-15 20:15:44

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

我正在尝试在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',

我会非常感谢任何帮助。

FIXED:

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配置 - >客户端协议 - > 双击 {{ 1}} - >默认端口),并将TCP/IP添加到port: *your_port*中的代码中。

最后,将var config = { ... }更改为var sql = require('mssql');

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

beatoss提供的解决方案适用于Windows,但不适用于Linux / mac。 msnodesqlv8驱动程序仅适用于Windows。对于Linux / mac环境,请尝试使用odbc