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
相关产品推荐
相关产品推荐

