NodeJS连接本地SQL Server失败,Python连接正常求排查
问题分析与解决方案
从错误信息ESOCKET和你提供的代码对比来看,问题大概率出在Node.js端的连接配置解析逻辑上——Python的ODBC驱动和Node.js依赖的tedious驱动在实例名的处理方式上存在差异。以下是几个针对性的修复方向:
1. 调整Server字段写法,移除instanceName配置
把实例名直接整合到server字段中,删除options里的instanceName项。tedious驱动有时候对单独配置的instanceName解析存在兼容性问题,而直接写在server字符串里的方式更贴近ODBC的写法(和你Python代码一致):
const config = { user: process.env.LOCAL_SQLEXPRESS_USER, password: process.env.LOCAL_SQLEXPRESS_PW, database: 'FamilyTree', server: 'localhost\\SQLEXPRESS01', // 用双反斜杠转义,或用模板字符串`localhost\SQLEXPRESS01` options: { trustServerCertificate: true, trustedConnection: false, encrypt: false }, };
2. 强制指定端口号跳过SQL Browser解析
既然你已经把IPAll的TCP端口设为1433,直接在server字段中指定端口,绕过SQL Browser的实例名解析流程,避免解析失败:
server: 'localhost,1433', // 或者保留实例名的同时指定端口 server: 'localhost\\SQLEXPRESS01,1433',
3. 修正代码中的异步查询问题(非连接错误,但会导致后续逻辑异常)
你的查询代码中缺少await,query方法返回的是Promise,直接打印会得到Promise对象而非查询结果,需要补上:
const result = await pool.request().query('select * from Members');
4. 更新依赖包确保兼容性
尝试更新mssql及其依赖的tedious驱动,避免版本不匹配导致的连接问题:
npm update mssql
内容的提问来源于stack exchange,提问作者sdMarth
相关产品推荐
相关产品推荐

