Node.js使用mssql连接SQL Server无报错无输出问题排查
问题排查与修复
你这段代码没输出的核心原因非常明确:定义的异步连接函数从未被调用,代码运行时根本不会执行数据库连接、查询逻辑,自然既不会抛错也不会有任何返回。
除此之外你的连接配置还有多处会导致连接失败的问题,逐一修复即可:
- 实例名配置错误:
MSSQLSERVER是SQL Server默认实例的固定名称,连接默认实例时不需要追加\\实例名后缀,直接填写服务器IP即可;只有自定义命名实例才需要加实例名后缀,且使用命名实例时不需要手动指定1433端口,命名实例默认通过SQL Browser服务分配动态端口。 - 缺少必填配置项:当前配置没有填写要连接的
database库名、认证用的user用户名、password密码,网络连通后也会因为认证失败无法连接。 - 加密配置不匹配:内网自建的SQL Server如果没有配置合法的SSL证书,需要把
trustServerCertificate设为true,测试环境可以直接把encrypt设为false跳过证书校验,避免证书校验阻断连接。 - 异常被静默吞掉:当前catch块只有注释没有任何错误输出,就算连接、查询过程中报错也不会有任何提示,排查问题时必须先把错误日志打出来。
修正后可运行代码
const sql = require('mssql') const sqlConfig = { server: "10.0.0.102", port: 1433, // 替换为你自己的数据库名、登录账号密码 database: "你的业务数据库名", user: "SQLServer登录账号", password: "对应账号的登录密码", pool: { max: 10, min: 0, idleTimeoutMillis: 30000 }, options: { encrypt: false, trustServerCertificate: true } } // 函数末尾加()立即执行,确保逻辑会被运行 (async () => { try { await sql.connect(sqlConfig) const result = await sql.query`select * from multiuserlogin` console.dir(result) } catch (err) { // 打印错误信息,禁止空吞异常 console.error('数据库操作异常:', err) } })()
额外连通性排查(改完代码仍连不上时检查)
- 打开SQL Server配置管理器,确认SQL Server的TCP/IP协议已启用,且IPAll配置项里的TCP端口确为1433,修改配置后需要重启SQL Server服务生效。
- 确认部署SQL Server的服务器防火墙放行了1433端口的入站规则,开发机可以通过
telnet 10.0.0.102 1433命令验证端口连通性。 - 确认SQL Server开启了混合身份认证模式(支持SQL Server账号密码登录,不是仅Windows认证),且你使用的登录账号有目标表的查询权限。
内容的提问来源于stack exchange,提问作者Zerg
相关产品推荐
相关产品推荐

