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

NodeJS连接本地Windows认证SQL Server时证书未生效问题求助

解决方案

1. 检查系统时间与证书有效期

证书"未生效"最常见的原因是本地系统时间和SQL Server证书的生效时间不匹配(比如系统时间比证书生效时间早):

  • 先同步本地系统时间到网络时间,确保时间准确;
  • 打开SQL Server配置管理器 → 展开「SQL Server网络配置」→ 选中你的实例对应的协议(比如「MSSQLSERVER的协议」)→ 右键点击「属性」→ 切换到「证书」选项卡,查看证书的「有效从」和「有效至」时间,确认当前系统时间在这个区间内。

2. 改用命名管道连接(本地连接更稳定)

本地连接SQL Server时,用命名管道可以绕开部分TCP/IP的证书验证问题,修改你的连接配置:

const sql = require("mssql");
require("msnodesqlv8");
const conn = new sql.ConnectionPool({
  database: "ApplicantsData",
  server: "(local)", // 或者填写你的实例名,比如 localhost\SQLEXPRESS
  driver: "msnodesqlv8",
  options: {
    trustedConnection: true,
    TrustServerCertificate: true,
    useNamedPipe: true // 启用命名管道
  }
});
conn.connect().then(() => {
  console.log("连接成功");
}).catch(err => {
  console.error("连接失败:", err);
});

3. 重新生成SQL Server自签名证书

如果证书本身存在有效期问题,手动重新生成:

  • 以管理员身份打开命令提示符,切换到SQL Server安装目录的Binn文件夹(路径示例:C:\Program Files\Microsoft SQL Server\MSSQL16.SQLEXPRESS\MSSQL\Binn,根据你的实例版本调整);
  • 执行命令:sqlservercert.exe -g;
  • 重启SQL Server服务,再尝试连接。

4. 临时禁用加密(仅本地测试用)

如果只是本地开发测试,可以临时关闭连接加密来跳过证书验证(生产环境禁止使用),修改配置如下:

const sql = require("mssql");
require("msnodesqlv8");
const conn = new sql.ConnectionPool({
  database: "ApplicantsData",
  server: "localhost",
  driver: "msnodesqlv8",
  options: {
    trustedConnection: true,
    TrustServerCertificate: true,
    encrypt: false // 禁用加密
  }
});
conn.connect().then(() => {
  console.log("连接成功");
}).catch(err => {
  console.error("连接失败:", err);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:45:48