You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js+Express连接SQL Server遇两类错误,求解决方法

Node.js + Express 连接SQL Server(Windows认证)常见错误解决

错误1:TypeError: sql.Connection is not a constructor

错误含义

直接引用msnodesqlv8库并调用Connection构造函数会触发该错误——msnodesqlv8本身并非独立的连接工具,它是作为mssql库的底层驱动存在的,并没有暴露Connection构造函数。

代码修改方案

通过mssql库调用连接池,并指定msnodesqlv8作为驱动,修改dbConfig.js如下:

const sql = require('mssql');

const config = {
  database: 'ApiDemoDB',
  server: '.\\SQLEXPRESS',
  driver: 'msnodesqlv8',
  options: {
    trustedConnection: true // 启用Windows认证
  }
};

// 创建连接池并返回Promise
const poolPromise = new sql.ConnectionPool(config)
  .connect()
  .then(pool => {
    console.log('Connected to MSSQL');
    return pool;
  })
  .catch(err => console.log('Database Connection Failed! Bad Config!: ', err));

module.exports = { sql, poolPromise };

关键说明:

  • 使用sql.ConnectionPool(mssql库中连接池的正确构造函数)替代不存在的sql.Connection
  • 保留msnodesqlv8作为驱动,确保Windows认证逻辑生效

错误2:ConnectionError: Failed to connect to localhost:1433 - Could not connect (sequence)

错误含义

该错误表示程序无法通过localhost:1433端口连接到目标SQL Server实例,常见诱因包括:

  • SQLEXPRESS命名实例未监听1433端口
  • 配置中同时指定port和instancename导致冲突
  • SQL Server的TCP/IP协议未启用

dbconfig修改及排查步骤

  1. 调整配置文件
    移除port配置(命名实例通过实例名称即可定位,无需固定端口),同时修正instancename为instanceName(mssql库的标准配置项),修改后的dbconfig.js:
const sql = require('mssql');

const dbconfig = {
  server: 'localhost',
  database: 'ApiDemoDB',
  driver: 'msnodesqlv8',
  options: {
    enableArithAbort: true,
    trustedConnection: true,
    instanceName: 'SQLEXPRESS'
  }
};

module.exports = dbconfig;

同步修改dbconnect.js,使用连接池规范连接:

const sql = require('mssql/msnodesqlv8');
const dbConfig = require('./dbConfig');

// 创建连接池实例
const pool = new sql.ConnectionPool(dbConfig);

// 监听连接池错误
pool.on('error', err => {
  console.log('Database pool error: ', err);
});

// 发起连接
const connect = async () => {
  try {
    await pool.connect();
    console.log('Connected to database: ', dbConfig.server);
  } catch (err) {
    console.log('Error while connecting to database: ', err);
  }
};

connect();

module.exports = pool;
  1. 检查SQL Server服务配置
  • 打开SQL Server配置管理器,找到SQL Server网络配置 -> SQLEXPRESS的协议,确保TCP/IP已启用
  • 若需固定端口,可在TCP/IP属性中设置端口为1433,之后重启SQL Server服务

内容的提问来源于stack exchange,提问作者Prabir Choudhury

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 05:50:26