Node.js连接MS SQL Server报错:ODBC数据源未找到且无默认驱动
Node.js连接MS SQL Server报错:[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动
配置代码(db.js)
const sql = require('mssql/msnodesqlv8'); const config = { server: 'EUDIN-F3-OFFSHO\\SQLEXPRESS', database: 'TodoDb', driver: 'msnodesqlv8', options: { trustedConnection: true, trustServerCertificate: true } } const pool = new sql.ConnectionPool(config) module.exports = pool;
获取待办事项模型代码
const pool = require('../_database/db'); const getTodosModel = async () => { const query = `select * from todo_list`; try { await pool.connect() const response = await pool.request().query(query) console.log('success', response) return response; } catch (error) { console.log('getTodosModel says: ', error.message) } } module.exports = getTodosModel;
报错内容
Error: getTodosModel says: [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动
已尝试的解决方案
- 在ODBC数据源管理器的用户DSN和系统DSN中添加数据源,但问题仍未解决
可行解决步骤
安装匹配的ODBC驱动
msnodesqlv8依赖系统级的SQL Server ODBC驱动,需安装与你的SQL Server版本兼容的驱动(如SQL Server 2017及以上版本推荐安装ODBC Driver 17或18 for SQL Server)。修正驱动名称配置
配置中的driver字段需与ODBC管理器中显示的驱动名称完全一致。例如安装ODBC Driver 18 for SQL Server后,应将driver值改为ODBC Driver 18 for SQL Server,而非msnodesqlv8(msnodesqlv8是npm包,底层依赖系统驱动)。调整后的配置示例:const config = { server: 'EUDIN-F3-OFFSHO\\SQLEXPRESS', database: 'TodoDb', driver: 'ODBC Driver 18 for SQL Server', options: { trustedConnection: true, trustServerCertificate: true } }重新安装依赖包
确保msnodesqlv8与Node.js版本兼容,执行以下命令重装依赖:npm uninstall mssql msnodesqlv8 && npm install mssql msnodesqlv8验证DSN连接有效性
在ODBC数据源管理器中,测试已添加的DSN能否成功连接到目标SQL Server,确认服务器名称、数据库名称及Windows认证配置无误。
内容的提问来源于stack exchange,提问作者Eudinson Uy
相关产品推荐
相关产品推荐

