Node应用通过mssql+msnodesqlv8连接SQL Server报错无法连接如何解决
Node.js 连接 SQL Server(msnodesqlv8驱动)报错排查方案
针对你遇到的「连接字符串无效[87]、登录超时、服务器不可访问」三类报错,按以下顺序排查:
- 修复配置冲突问题
注意:trustedConnection: true代表启用Windows集成身份验证,会自动取当前系统登录的Windows账号做认证,和手动填写的user/passwordSQL账号认证模式互斥,混写会直接触发87连接字符串无效错误- 本地开发用Windows身份验证的话,直接删除配置里的
user、password字段,补充trustServerCertificate: true跳过本地证书校验,修正后配置如下:
- 本地开发用Windows身份验证的话,直接删除配置里的
const dbConfig = { driver: 'msnodesqlv8', server: 'DESKTOP-QG3R51Q', database: 'WeighingScales', options: { instanceName: 'SQLEXPRESS', trustedConnection: true, trustServerCertificate: true } };
- 如果你要用SQL账号密码登录,直接删除
options里的trustedConnection: true字段,确认填写的账号密码有目标库的访问权限即可。 - 检查SQL Server基础运行配置
- 打开SQL Server配置管理器,找到
SQL Server(SQLEXPRESS)服务,确认服务状态为「正在运行」,启动类型设为自动避免下次开机服务未启动。 - 找到对应实例下的「SQL Server网络配置 - SQLEXPRESS的协议」,确认
TCP/IP协议为启用状态(SQL Express默认安装后TCP/IP是禁用状态,是触发服务器找不到、超时错误的核心原因)。 - 右键TCP/IP选属性,切换到「IP地址」标签页,拉到最底部的
IPAll分组,确认TCP端口值为1433,如果是自定义端口记好端口号,后续配置要对应。所有配置修改完后重启SQLEXPRESS服务生效。 - 右键SQL Server实例选属性,切到「安全性」标签页,确认认证模式和你配置里选的一致:用Windows认证就选「Windows身份验证模式」,用SQL账号就选「SQL Server和Windows身份验证模式(混合模式)」。
- 打开SQL Server配置管理器,找到
- 修复连接参数常见错误
- 如果你自定义了SQL Server的TCP端口,配置里不能同时写
instanceName和port两个参数,同时传值也会触发连接字符串无效错误,指定自定义端口时直接删掉instanceName字段,在options里加port: 你的自定义端口号即可。 - 本地连接测试时可以把
server字段值改成localhost,排除主机名解析失败的问题。 - 检查系统防火墙设置,放通SQL Server的1433端口入站规则,或者直接把SQL Server服务程序加入防火墙白名单,避免连接被拦截超时。
- 如果你自定义了SQL Server的TCP端口,配置里不能同时写
- 驱动兼容性修复
你报错里调用的是SQL Server Native Client 11.0老版本驱动,对SQL Server 2019及以上版本兼容性很差,直接安装最新版Microsoft ODBC Driver 17/18 for SQL Server即可,安装完成后不需要修改现有配置里的driver字段,msnodesqlv8会自动调用高版本兼容驱动。
内容的提问来源于stack exchange,提问作者takihama
相关产品推荐
相关产品推荐

