SQL Server Native Client 11.0连接失败求助(附Node.js连接代码)
排查Node.js(Express+msnodesqlv8)连接SQL Server的命名管道连接错误
问题详情
错误提示:SQL Server Native Client 11.0: 命名管道提供程序:无法打开与SQL Server的连接
我使用Node.js结合Express框架、msnodesqlv8驱动连接SQL Server时触发上述错误,代码片段如下:
var express = require('express'); var app = express(); app.get('/', function (req, res) { var sql = require('mssql/msnodesqlv8'); var config = { driver: 'msnodesqlv8', connectionString: 'Driver={SQL Server Native Client 11.0};Server=DESKTOP-QUUGSCT\SQLEXPRESS;Database=nodedb;Trusted_Connection=yes;', // CONNECTION_NAME = "Provider=SQLNCLI10.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog="CatalogName";Data Source="Production_Server_Name;"" }; const pool = new sql.ConnectionPool(config); pool.connect() .then(() => res.send('连接成功')) .catch(err => { console.error(err); res.send('连接失败'); }); });
排查与解决步骤
1. 修复连接字符串的转义错误
JavaScript字符串中的反斜杠\是转义字符,你当前的Server=DESKTOP-QUUGSCT\SQLEXPRESS会被解析成DESKTOP-QUUGSCTSQLEXPRESS,导致驱动找不到正确的实例。两种修复方式:
- 使用双反斜杠:
connectionString: 'Driver={SQL Server Native Client 11.0};Server=DESKTOP-QUUGSCT\\SQLEXPRESS;Database=nodedb;Trusted_Connection=yes;' - 使用ES6模板字符串(反引号)避免转义:
connectionString: `Driver={SQL Server Native Client 11.0};Server=DESKTOP-QUUGSCT\SQLEXPRESS;Database=nodedb;Trusted_Connection=yes;`
2. 确认SQL Server服务运行状态
- 按下
Win+R输入services.msc打开服务管理器 - 找到**SQL Server (SQLEXPRESS)**服务,确保状态为「正在运行」。若未启动,右键选择「启动」,并设置启动类型为「自动」避免下次重启后失效。
3. 启用SQL Server的命名管道协议
命名管道是你当前连接使用的协议,若未启用会直接导致连接失败:
- 打开SQL Server配置管理器(可通过开始菜单搜索找到)
- 展开「SQL Server网络配置」→「SQLEXPRESS的协议」
- 右键点击「命名管道」选择「启用」,之后重启SQL Server服务生效。
4. 验证Windows身份验证权限
你的连接字符串使用Trusted_Connection=yes(Windows身份验证),需确保:
- 打开SQL Server Management Studio(SSMS),用Windows身份验证登录
DESKTOP-QUUGSCT\SQLEXPRESS实例 - 右键服务器→「属性」→「安全性」,确认服务器身份验证模式包含「Windows身份验证模式」
- 检查当前Windows用户对
nodedb数据库有至少「连接」权限(可在数据库→「安全性」→「用户」中配置)
5. 用SSMS先测试连接
如果SSMS都无法连接到DESKTOP-QUUGSCT\SQLEXPRESS,说明问题出在SQL Server配置而非Node.js代码。先解决SSMS的连接问题,再回到代码测试。
内容的提问来源于stack exchange,提问作者ganesan s
相关产品推荐
相关产品推荐

