使用Node.js的mssql/msnodesqlv8连接SQL Server生产服务器报ODBC驱动错误
Node.js使用msnodesqlv8连接SQL Server报错:ODBC驱动未找到
你的代码在本地运行正常,但生产服务器抛出[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified错误,核心原因是生产服务器未安装对应版本的SQL Server ODBC驱动,或者驱动架构与Node.js版本不匹配。以下是具体解决步骤:
解决步骤
1. 安装适配的SQL Server ODBC驱动
生产服务器必须安装与SQL Server版本匹配的ODBC驱动:
- 若使用SQL Server 2012及以上版本,推荐安装ODBC Driver 17 for SQL Server
- 注意匹配服务器系统架构(32位/64位):Node.js 18.x默认是64位,优先安装64位驱动
2. 验证驱动安装状态
打开ODBC数据源管理器确认驱动存在:
- 64位系统:运行
C:\Windows\System32\odbcad32.exe - 32位系统:运行
C:\Windows\SysWOW64\odbcad32.exe
切换到「驱动」标签页,确认能看到类似ODBC Driver 17 for SQL Server的条目。
3. 检查连接配置细节
- 确认
server字段格式正确:如果是命名实例,需写成服务器名\实例名(如WIN-XXXXXX\SQLEXPRESS);默认实例直接填服务器IP或主机名即可 - 虽然启用了
trustedConnection: true(Windows身份验证),但驱动缺失会直接阻断身份验证流程
4. 重新安装npm依赖
驱动未安装时,msnodesqlv8依赖可能安装不完整,需重新安装:
先卸载现有依赖:
npm uninstall mssql msnodesqlv8
驱动安装完成后,重新安装依赖:
npm install mssql msnodesqlv8
你提供的代码与报错信息
连接代码
const sql = require('mssql/msnodesqlv8') const config = { user: 'user\\name', password: 'password', server: 'server', database: 'database', options: { trustedConnection: true, trustServerCertificate: true, }, }; sql.connect(config, function (err) { if (err) throw(err); console.log('connected') });
报错信息
ConnectionError: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified at D:\services\nodejs\BIDVESTFM_Rental_Inspection_Upload_Processor\node_modules\mssql\lib\msnodesqlv8\connection-pool.js:56:17 at Immediate.<anonymous> (D:\services\nodejs\BIDVESTFM_Rental_Inspection_Upload_Processor\node_modules\msnodesqlv8\lib\connection.js:145:15) at process.processImmediate (node:internal/timers:471:21) { code: undefined, originalError: [Error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified] { sqlstate: 'IM002', code: 0, severity: 0, serverName: '', procName: '', lineNumber: 0 } } Node.js v18.13.0
内容的提问来源于stack exchange,提问作者Bro Lee
相关产品推荐
相关产品推荐

