使用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
相关产品推荐
相关产品推荐

