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

使用NodeJS连接SQLServer无响应且无控制台输出该如何解决?

你这个问题的核心原因是tedious 14.x及以上版本不会自动发起连接,需要手动调用连接方法,你当前代码没有触发连接动作,所以没有任何日志输出。

步骤1:补充手动连接代码

在绑定完connect事件监听逻辑后,添加connection.connect()触发连接动作,修改后的代码如下:

var Connection = require('tedious').Connection;
var config = {
    server: 'SERVERNAME', // 建议先替换为实际IP,本地测试用127.0.0.1
    authentication: {
        type: 'default',
        options: {
            userName: 'sa',
            password: 'password' // 替换为实际sa密码
        }
    },
    options: {
        database: 'weather_app',
        // 用命名实例的话取消下一行注释,填写实际实例名
        // instanceName: 'Sqlexpress',
        rowCollectionOnDone: true,
        useColumnNames: false,
        // 非默认端口的话添加端口配置,默认1433可省略
        // port: 1433
    }
}

var connection = new Connection(config);
// 新增error事件监听,捕获连接过程中的异常
connection.on('error', function (err) {
    console.error('连接异常:', err);
});

connection.on('connect', function (err) {
    if (err) {
        console.log('连接失败:', err);
    } else {
        console.log('Connected');
    }
});

// 新增:手动触发连接
connection.connect();

module.exports = connection;

步骤2:确认SQL Server侧配置

如果加了连接代码还是报错/无响应,检查以下配置:

  • 确认SQL Server已启用TCP/IP连接:打开SQL Server配置管理器,找到对应实例的「SQL Server网络配置」,将TCP/IP选项设置为启用,重启SQL Server服务后生效
  • 确认SQL Server已开启混合身份验证模式:sa账号登录需要启用SQL Server和Windows混合验证模式
  • 确认服务器防火墙已放行SQL Server端口(默认1433),本地测试可临时关闭防火墙验证
  • 确认SERVERNAME、账号密码、实例名、数据库名和实际环境一致

内容的提问来源于stack exchange,提问作者Martín JF

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:36:02