Node.js连接MSSQL报ESOCKET错误无法连接1433端口如何解决
MSSQL ESOCKET连接错误排查与修复方案
错误根因梳理
- 配置存在认证逻辑冲突:同时配置了SQL身份验证的sa账号密码,和
trustedconnection: true的Windows可信认证,二者互斥会导致认证失败 - 配置项大小写不符合规范:mssql库的配置项为大小写敏感,你写的
trustedconnection、instancename为全小写,不符合官方驼峰命名要求,会导致配置不生效 - 端口与实例名配置冲突:SQLEXPRESS实例默认使用动态端口,你同时配置了实例名和固定端口1433,会导致驱动无法正确识别连接目标
- 底层网络/服务配置异常:MSSQL的TCP/IP协议未启用、1433端口被防火墙拦截、sa账号未启用都会触发该报错
可落地修复步骤
- 第一步:修正dbconfig.js配置
根据你的使用场景二选一配置即可,本地开发使用sa账号登录推荐如下配置:
const config = { user: 'sa', password: '123456', server: '127.0.0.1', database: 'sportsxdb', options: { trustedConnection: false, // 关闭Windows可信认证,使用SQL账号登录 enableArithAbort: true, instanceName: 'SQLEXPRESS', // 修正为驼峰命名 trustServerCertificate: true // 跳过本地自签名证书校验,避免额外报错 } // 保留instanceName时删除port配置,驱动会自动匹配实例端口 } module.exports = config
如果需要固定用1433端口,就删除instanceName配置项,保留port:1433即可。
- 第二步:开启MSSQL TCP/IP协议
打开SQL Server配置管理器 -> 选择「SQL Server网络配置」-> 「SQLEXPRESS的协议」-> 右键TCP/IP选择「启用」-> 切换到IP地址选项卡,拉到最底部IPAll区域,清空TCP动态端口,TCP端口填写1433(仅固定端口场景需要)-> 保存后重启SQL Server(SQLEXPRESS)服务。 - 第三步:验证端口连通性
打开命令提示符执行telnet 127.0.0.1 1433,如果能正常跳转黑屏说明端口连通正常,报错的话需要在Windows防火墙添加入站规则,允许1433端口的TCP连接,也可以临时关闭防火墙测试。 - 第四步:校验sa账号状态
打开SSMS连接数据库,右键服务器选择「属性」->「安全性」,确认身份验证模式为「SQL Server和Windows身份验证模式」;再进入「安全性」->「登录名」-> 右键sa选择「属性」,确认密码正确、账号未被禁用、未锁定,修改后重启SQL服务生效。
内容的提问来源于stack exchange,提问作者Guilherme Abel
相关产品推荐
相关产品推荐

