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

Node.js连接SQL Server遇ODBC驱动未找到错误,求Windows Server解决方案

解决Windows Server 2019上msnodesqlv8连接SQL Server的ODBC驱动找不到问题

解决方案

1. 明确指定ODBC驱动版本

你的服务器安装的是ODBC Driver 18 for SQL Server,但msnodesqlv8可能默认查找旧版驱动(比如Driver 17),需要在配置中显式指定驱动名称:

import mssql, {type config as Config} from 'mssql/msnodesqlv8';

const baseConfig: Partial<Config> = {
  database: 'XX',
  driver: 'ODBC Driver 18 for SQL Server', // 明确指定驱动版本
  options: {
    trustedConnection: true,
    trustServerCertificate: true, // Driver 18默认强制加密,内部服务器需添加此参数跳过证书验证
  },
};

export const getPool = async () => {
  const server = `xxxx01.subdom.dom.priv`;
  const p = new mssql.ConnectionPool({...baseConfig, server});
  await p.connect();
  return p;
};

2. 匹配Node.js与ODBC驱动的位数

Windows系统中,32位Node.js只能调用32位ODBC驱动,64位Node.js对应64位驱动:

  • 检查Node.js位数:打开命令提示符,执行 node -p process.arch,输出x64表示64位,ia32表示32位。
  • 确保服务器上安装了对应位数的ODBC Driver 18 for SQL Server,若Node.js是32位,需额外安装32位版本的驱动。

3. 改用ODBC连接字符串直接配置

若配置对象解析存在问题,可直接使用标准ODBC连接字符串初始化连接池:

import mssql from 'mssql/msnodesqlv8';

export const getPool = async () => {
  const connectionString = `Driver={ODBC Driver 18 for SQL Server};Server=xxxx01.subdom.dom.priv;Database=XX;Trusted_Connection=Yes;TrustServerCertificate=Yes`;
  const p = new mssql.ConnectionPool(connectionString);
  await p.connect();
  return p;
};

关键原因说明

  • 驱动版本不匹配:msnodesqlv8未默认适配Driver 18,必须显式声明驱动名称才能让ODBC管理器找到对应驱动。
  • 加密策略变化:ODBC Driver 18默认启用Encrypt=Yes,内部无证书的SQL Server需添加TrustServerCertificate=Yes,否则会出现加密验证失败(解决驱动问题后可能触发此错误)。
  • 位数不兼容:Windows下ODBC驱动与Node.js位数必须严格对应,否则驱动管理器无法定位到正确的驱动文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:13:18