You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Node.js和Express.js通过Windows身份验证连接SQL Server

使用Node.js + Express通过Windows身份验证连接SQL Server

我之前刚好实现过类似的需求,结合Express和Windows身份验证连接SQL Server,下面是适配你环境(数据库myDatabase、实例.\SQLEXPRESS、表dbo.Person)的完整步骤:

先确认前提条件已满足

确保你已经安装好以下工具/包:

  • Node.js(建议LTS版本)
  • Express.js npm包(后续安装也可以)
  • Microsoft SQL Server(实例.\SQLEXPRESS已运行)
  • ODBC Driver for SQL Server(推荐用ODBC Driver 17版本)
  • mssql npm包(SQL Server的Node.js驱动)
  • msnodesqlv8 npm包(支持Windows身份验证的ODBC桥接驱动)

步骤1:初始化项目并安装依赖

如果还没有Express项目,先打开命令行执行以下命令:

# 创建项目文件夹并进入
mkdir express-mssql-demo && cd express-mssql-demo
# 初始化npm项目
npm init -y
# 安装所需依赖
npm install express mssql msnodesqlv8

步骤2:编写连接与查询代码

在项目根目录创建app.js文件,写入以下代码:

const express = require('express');
const sql = require('mssql/msnodesqlv8'); // 使用msnodesqlv8驱动
const app = express();
const port = 3000;

// SQL Server连接配置(Windows身份验证)
const config = {
  server: '.\\SQLEXPRESS', // 注意转义反斜杠,或者用正斜杠 './SQLEXPRESS'
  database: 'myDatabase',
  driver: 'msnodesqlv8',
  options: {
    trustedConnection: true, // 启用Windows身份验证
    trustServerCertificate: true // 如果SQL Server用的是自签证书,需要开启这个
  }
};

// 测试连接并查询dbo.Person表的路由
app.get('/people', async (req, res) => {
  try {
    // 建立连接
    await sql.connect(config);
    // 执行查询
    const result = await sql.query('SELECT * FROM dbo.Person');
    // 返回查询结果
    res.json(result.recordset);
  } catch (err) {
    // 捕获错误并返回
    console.error('数据库操作出错:', err);
    res.status(500).json({ error: '数据库查询失败', details: err.message });
  } finally {
    // 确保连接关闭
    await sql.close();
  }
});

// 启动Express服务
app.listen(port, () => {
  console.log(`Express服务运行在 http://localhost:${port}`);
});

步骤3:测试运行

  1. 确保SQL Server实例.\SQLEXPRESS处于运行状态,并且当前Windows账号拥有访问myDatabase和dbo.Person表的权限(需要在SQL Server里给该账号添加对应的数据库角色,比如db_datareader)。
  2. 在命令行执行:
node app.js
  1. 打开浏览器或用Postman访问 http://localhost:3000/people,如果配置正确,就能看到dbo.Person表的所有数据了。

常见注意事项

  • ODBC Driver路径:如果运行时提示找不到驱动,可能需要在config里指定驱动路径,比如:
    options: {
      trustedConnection: true,
      trustServerCertificate: true,
      driver: 'C:\\Windows\\System32\\msodbcsql17.dll' // 64位驱动路径,32位用SysWOW64下的文件
    }
    
  • Node.js版本兼容性:msnodesqlv8对Node.js版本有要求,建议查看其npm文档确认适配的Node.js版本。
  • 权限问题:Windows身份验证使用的是当前运行Node.js进程的Windows账号,务必确保该账号在SQL Server中被授予了相应的数据库访问权限。

内容的提问来源于stack exchange,提问作者Prateek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:21:01