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

Node.js连接SQL Server数据库失败问题求助

Node.js连接SQL Server错误解析与解决步骤

嘿,作为新手遇到这种数据库连接问题太正常了,我帮你拆解一下这些错误的含义,再给你一步步的解决办法:

你的代码

var express = require('express'); 
var app = express(); 
var sql = require("mssql"); 

app.get('/', function (req, res) { 
    // config for your database 
    var config = { 
        user: 'superadmin', 
        password: '***', 
        server: 'localhost', 
        database: 'XXX' 
    }; 

    // connect to your database 
    sql.connect(config, function (err) { 
        if (err) console.log(err); 

        // create Request object 
        var request = new sql.Request(); 

        // query to the database and get the records 
        request.query('select * from Schools', function (err, recordset) { 
            if (err) console.log(err) 
            // send records as a response 
            res.send(recordset); 
        }); 
    }); 
}); 

var server = app.listen(5000, function () { 
    console.log('Server is running..'); 
});

错误含义拆解

1. Tedious库警告

tedious deprecated The default value for options.encrypt will change from false to true. Please pass false explicitly if you want to retain current behaviour.

这只是个警告不是错误:mssql依赖的tedious库未来版本会把加密连接的默认值从false改成true,如果你是本地测试环境不需要加密连接,得显式在配置里声明encrypt: false来保持当前行为。

2. 核心连接失败错误

{ ConnectionError: Failed to connect to localhost:1433 - Could not connect (sequence)
  ...
  code: 'ESOCKET',
  originalError: {
    message: 'Failed to connect to localhost:1433 - Could not connect (sequence)',
    code: 'ESOCKET'
  },
  name: 'ConnectionError'
}

这是最关键的问题:你的Node.js程序连不上本地1433端口的SQL Server实例。常见原因包括:

  • SQL Server服务根本没启动
  • SQL Server默认关闭了TCP/IP协议
  • 1433端口被防火墙拦截
  • superadmin账号密码错误,或者没有访问XXX数据库的权限
  • 数据库名称XXX拼写错误

3. 连锁错误

{ ConnectionError: Connection is closed.
  ...
  code: 'ECONNCLOSED',
  name: 'ConnectionError'
}

这个是前面连接失败的连锁反应:因为数据库连接没建立成功,你后面尝试执行request.query时,连接已经处于关闭状态,所以报这个错。只要解决了第一个连接问题,这个错误会自动消失。

一步步解决问题

步骤1:确认SQL Server服务在运行

按下Win+R输入services.msc打开服务管理器,找到SQL Server (MSSQLSERVER)(如果是自定义实例,名称会是SQL Server(你的实例名)),确保它的状态是正在运行,没运行的话右键启动它。

步骤2:启用SQL Server的TCP/IP协议

  • 打开SQL Server配置管理器(开始菜单搜索就能找到)
  • 展开SQL Server网络配置,点击MSSQLSERVER的协议(对应你的实例)
  • 右键TCP/IP选择启用
  • 再右键TCP/IP选属性,切换到IP地址选项卡,拉到最下面的IPALL部分,确认TCP端口是1433(如果改了其他端口,代码里的server要写成localhost,端口号)
  • 回到服务管理器,重启SQL Server服务让配置生效

步骤3:完善代码连接配置

给你的config对象加上options属性,消除警告同时确保参数正确:

var config = { 
    user: 'superadmin', 
    password: '***', 
    server: 'localhost', 
    database: 'XXX',
    options: {
        encrypt: false // 本地环境不需要加密,消除警告
    }
};

步骤4:检查防火墙设置

临时关闭Windows防火墙测试,如果能连上,说明是防火墙拦截了1433端口,需要在防火墙里添加允许1433端口入站的规则。

步骤5:验证账号权限

打开SQL Server Management Studio,用superadmin账号登录,确认能访问XXX数据库,并且有权限查询Schools表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:40:07