使用Node.js连接SQL Server时遭遇ECONNREFUSED连接拒绝错误的技术问询
排查并解决Node.js连接SQL Server的ECONNREFUSED错误
兄弟,看了你的问题和代码,马上发现两个关键问题导致了连接失败,咱们一步步来解决:
核心问题分析
首先,你犯了两个典型的搭配错误:
- 你用的是
mysqlNode.js模块,但要连接的是SQL Server——这个模块是专门给MySQL数据库设计的,和SQL Server完全不兼容! - 错误里的端口是
3306,这是MySQL的默认端口,而SQL Server的默认端口是1433,端口不匹配肯定连不上。
分步解决步骤
1. 替换为SQL Server专用的连接模块
先安装官方推荐的mssql模块(这是Node.js连接SQL Server的标准库):
npm install mssql
然后把你的连接代码改成下面这样,注意配置项的差异:
const sql = require('mssql'); // 配置SQL Server连接参数 const sqlConfig = { user: '你的SQL Server用户名', password: '你的密码', database: '目标数据库名', server: '172.24.68.210', // 直接用错误里的IP,或者替换成你的hostname port: 1433, // SQL Server默认端口,如果你的服务器改了端口就填对应值 options: { encrypt: true, // 如果是Azure SQL或者生产环境需要加密连接就开启 trustServerCertificate: true // 开发环境可以开这个,避免证书验证报错 } }; // 测试连接的异步函数 async function testConnection() { try { await sql.connect(sqlConfig); console.log('成功连上SQL Server啦!'); } catch (err) { console.error('连接失败详情:', err); } } // 执行测试 testConnection();
2. 检查SQL Server的网络配置
光改代码还不够,得确保你的SQL Server本身允许外部连接:
- 打开SQL Server配置管理器,找到「SQL Server网络配置」→ 对应你的服务器实例的「协议」→ 启用「TCP/IP」协议,然后重启SQL Server服务生效。
- 打开SQL Server Management Studio,右键你的服务器 → 「属性」→ 「连接」→ 勾选「允许远程连接到此服务器」。
- 检查服务器的防火墙:确保
1433端口(或者你自定义的SQL Server端口)已经开放,允许你的Node.js机器访问。
3. 验证网络连通性
在你的Node.js机器上先测能不能通目标服务器:
# 先ping一下看网络可达性 ping 172.24.68.210 # 再测端口是否开放(Windows用这个) Test-NetConnection 172.24.68.210 -Port 1433 # Linux/macOS用telnet或者nc telnet 172.24.68.210 1433
如果端口不通,那肯定是防火墙或者网络路由的问题,得先搞定这个才能继续。
4. 确认账号权限
最后检查你用的SQL Server账号:
- 确保账号有登录目标服务器的权限,并且允许从你的客户端IP登录(SQL Server的登录账号默认可能只允许本地登录)。
- 确认账号有权限访问目标数据库。
内容的提问来源于stack exchange,提问作者Vaibhav vj




