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

Node.js通过IP地址连接SQL Server失败的排查与解决建议

解决Node.js通过IP连接SQL Server被拒绝的问题

针对你遇到的「用localhost能连但用IP地址连接时被目标机器主动拒绝」的问题,按以下步骤排查配置:

1. 开启SQL Server的TCP/IP远程连接

  • 打开SQL Server配置管理器,依次展开「SQL Server网络配置」→ 对应实例的「协议」,确保「TCP/IP」处于启用状态。
  • 双击「TCP/IP」切换到「IP地址」标签,找到目标IP(172.20.10.1),将「已启用」设为「是」,「TCP端口」指定为1433(SQL Server默认端口),设置完成后重启SQL Server服务。

2. 确保SQL Server浏览器服务运行(针对命名实例)

如果你的SQL Server是命名实例(而非默认实例),必须启动「SQL Server浏览器」服务,否则远程无法通过IP定位到实例。

3. 配置防火墙放行端口

  • 在SQL Server所在主机的防火墙中,添加入站规则,允许TCP协议的1433端口(或自定义实例端口)通过。
  • 同时检查Node.js运行环境(或虚拟Android环境)的防火墙,确保允许出站连接到目标IP的1433端口。

4. 调整Node.js连接配置

  • 若使用命名实例,需在server字段中追加实例名,格式为IP地址\实例名,例如172.20.10.1\SQLEXPRESS。
  • 加密选项适配:如果SQL Server未配置SSL加密,可将encrypt设为false,或保持encrypt: true并添加trustServerCertificate: true(仅开发环境推荐)。调整后的配置示例:
const sql = require('mssql/msnodesqlv8');

const config = {
    user: 'sa',
    password: '123456',
    server: '172.20.10.1', // 命名实例改为'172.20.10.1\SQLEXPRESS'
    database: 'coffee',
    options: {
        encrypt: true,
        trustServerCertificate: true, // 新增此配置跳过证书验证
    },
};

// 后续连接代码不变
sql.connect(config)
    .then(pool => {
        console.log('Connected to SQL Server');
        return pool.request().query('SELECT * FROM coffee_info');
    })
    .then(result => {
        console.log(result.recordset);
    })
    .catch(err => {
        console.error('Error:', err);
    })
    .finally(() => {
        sql.close();
    });

5. 验证网络连通性

在Node.js运行环境(或虚拟Android环境)中,用以下命令测试端口是否可达:

  • Windows PowerShell:Test-NetConnection 172.20.10.1 -Port 1433
  • 命令提示符:telnet 172.20.10.1 1433
    如果测试失败,优先排查网络路由、防火墙拦截问题。

6. 确认SQL Server登录权限

打开SQL Server Management Studio,依次进入「安全性」→「登录名」→「sa」,右键选择「属性」,在「状态」标签页中确认「允许连接到数据库引擎」已启用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:46:20