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

Node.js中使用Sequelize连接Microsoft SQL Server报错求助

解决Sequelize连接SQL Server的"Failed to connect"错误

以下是针对性的排查和修复步骤:

1. 确认SQL Server服务与网络配置

  • 打开服务管理器(Win+R输入services.msc),找到SQL Server (MSSQLSERVER),确保服务处于运行状态,建议设置为自动启动避免重启失效。
  • 打开SQL Server配置管理器,进入「SQL Server网络配置 -> MSSQLSERVER的协议」,确保TCP/IP已启用。双击TCP/IP,在「IP地址」标签下,检查IPALL的TCP端口是否为1433(若修改过端口,需与.env中的BD_PORT一致)。

2. 验证.env配置准确性

确保.env文件参数无拼写错误:

  • BD_HOST:本地数据库填localhost或127.0.0.1,远程数据库填对应IP/主机名
  • BD_PORT:默认1433,注意是纯数字格式,不要加引号
  • BD_NOMBRE:数据库名称需与实际完全匹配
  • BD_USUARIO/BD_PASSWORD:确认账号密码正确,且该账号拥有目标数据库的访问权限

3. 安装必要的SQL Server驱动

Sequelize连接SQL Server依赖tedious驱动,执行命令安装:

npm install tedious

4. 检查防火墙设置

  • 本地防火墙:确保允许1433端口(或自定义端口)的入站/出站连接
  • 远程服务器:若连接远程SQL Server,需在服务器端开放对应端口

5. 测试基础连接(排除Sequelize问题)

用tedious直接测试连接,确认问题根源:

const { Connection } = require('tedious');
require('dotenv').config({path:'.env'});

const config = {
  server: process.env.BD_HOST,
  authentication: {
    type: 'default',
    options: {
      userName: process.env.BD_USUARIO,
      password: process.env.BD_PASSWORD
    }
  },
  options: {
    port: parseInt(process.env.BD_PORT),
    database: process.env.BD_NOMBRE,
    encrypt: false // 远程连接需根据服务器配置设为true
  }
};

const connection = new Connection(config);
connection.on('connect', (err) => {
  err ? console.error('连接失败:', err.message) : console.log('成功连接到SQL Server');
});
connection.connect();

若这段代码报错,说明问题在数据库/网络配置;若成功连接,再回到Sequelize配置排查。

6. 修正Sequelize配置细节

删除过时配置,修正参数类型:

import { Sequelize } from "sequelize";
import dotenv from 'dotenv';
dotenv.config({path:'.env'})

const db = new Sequelize(process.env.BD_NOMBRE, process.env.BD_USUARIO, process.env.BD_PASSWORD,{
    host: process.env.BD_HOST,
    port: parseInt(process.env.BD_PORT), // 显式转换为数字类型
    dialect: 'mssql',
    define:{
        timestamps: false // 用布尔值替代0,避免自动添加时间戳字段
    },
    pool:{
        max:5,
        min:0,
        acquire:30000,
        idle:10000
    },
    dialectOptions: {
        encrypt: false // 本地连接设为false,远程按需设为true
    }
});

export default db;

注:operatorsAliases:0是Sequelize v5+废弃的配置,需删除。

内容的提问来源于stack exchange,提问作者luis.torres

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:42:47