首次Node.js连接SQL Server遇登录失败,请求技术支持
Node.js连接SQL Server登录失败问题排查与修正
你遇到的登录失败核心是身份验证方式冲突,同时配置文件存在语法错误,以下是具体修正方案:
一、核心配置错误修正
1. 身份验证方式二选一
当前配置同时启用了trustedconnection: true(Windows集成身份验证)和user/password(SQL Server身份验证),这会导致SQL Server混淆验证逻辑,直接触发登录失败:
- 若使用Windows身份验证:删除
user和password字段,且将trustedconnection改为驼峰写法trustedConnection(符合mssql库的配置规范); - 若使用SQL Server身份验证:删除
trustedconnection: true,注意这里的账号密码必须是SQL Server独立登录账号(不是Windows系统的用户名密码),且该账号需拥有learningProgress数据库的访问权限。
2. 修复配置语法错误
配置文件中port:55829前缺少逗号,会导致JavaScript语法解析失败,必须补充:
const config = { // 仅SQL身份验证保留以下两行 user: 'sql_login_account', password: 'sql_login_password', server: 'localhost', database: 'learningProgress', options: { trustedConnection: true, // 仅Windows身份验证保留此行 enableArithAbort: true, instanceName: 'DESKTOP-564IAGD\\SQLEXPRESS', // 写法正确,注意驼峰instanceName encrypt: true, trustServerCertificate: true, }, port: 1433 // 补充逗号,且对应你设置的TCP/IP端口(你提到是1433,而非55829) };
3. 实例名称与端口的对应逻辑
你提到TCP/IP端口已设为1433,但配置里写了port:55829,这里需要统一:
- 若SQL Server Express实例确实监听1433端口,将
port改为1433; - 若已指定正确端口,
instanceName可省略(端口直接定位到目标实例)。
二、验证与排查步骤
- 确认SQL Server身份验证模式:打开SQL Server Management Studio(SSMS),右键服务器→属性→安全性,检查是否启用了对应模式(Windows身份验证或混合模式);
- 测试账号有效性:用SSMS先手动登录目标账号,确认能正常访问
learningProgress数据库; - 检查防火墙规则:确保Windows防火墙允许Node.js访问SQL Server的监听端口(1433);
- 重启服务:修改TCP/IP配置后,需重启SQL Server和SQL Server Browser服务生效。
三、修正后的完整配置示例
Windows身份验证版本
const config = { server: 'localhost', database: 'learningProgress', options: { trustedConnection: true, enableArithAbort: true, instanceName: 'DESKTOP-564IAGD\\SQLEXPRESS', encrypt: true, trustServerCertificate: true, }, port: 1433 };
SQL Server身份验证版本
const config = { user: '你的SQL登录账号', password: '你的SQL登录密码', server: 'localhost', database: 'learningProgress', options: { enableArithAbort: true, instanceName: 'DESKTOP-564IAGD\\SQLEXPRESS', encrypt: true, trustServerCertificate: true, }, port: 1433 };
内容的提问来源于stack exchange,提问作者Sara Kay
相关产品推荐
相关产品推荐

