如何使用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版本)
mssqlnpm包(SQL Server的Node.js驱动)msnodesqlv8npm包(支持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:测试运行
- 确保SQL Server实例
.\SQLEXPRESS处于运行状态,并且当前Windows账号拥有访问myDatabase和dbo.Person表的权限(需要在SQL Server里给该账号添加对应的数据库角色,比如db_datareader)。 - 在命令行执行:
node app.js
- 打开浏览器或用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
相关产品推荐
相关产品推荐

