首页 > 解决方案 > SQL Server 未与节点应用程序连接

问题描述

我正在尝试使用 Sequelize ORM 将我的 nodejs/express 应用程序连接到 SQL Server 2017。这是我第一次使用 SQL Server。我不确定问题出在哪里。

情况:-

  1. 我使用 SQL Server Management Studio 创建了一个数据库

  2. 我在安全 > 登录下创建了另一个用户(例如:- 用户名、密码)

  3. 并使该用户成为该数据库的所有者

问题:

  1. 当我尝试使用 Management Studio(使用 SQL Server 身份验证)连接到 SQL Server 时,每次都会建立我的连接。

  2. 但是当我尝试将同一个数据库与我的 nodejs 应用程序连接时,我遇到了错误:

    错误:- [SequelizeAccessDeniedError: Login faled for user '']##

注意:我已经尝试过mssqlnpm 包,但无法从 nodejs 连接到 SQL Server

这是我使用 sequelize 的 index.js 文件的代码

const express = require('express');

const app = express();

const Sequelize = require('sequelize');
const sequelize = new Sequelize("demo", "demoUser", "dPass", {
    host: "localhost",
    dialect: "mssql",
    pool: {
        max:  1,
        min: 0,
        idle: 5000,
        acquire: 5000
    },
    dialectOptions: {
        encrypt: true
    }
});

sequelize
    .authenticate()
    .then(() => {
        console.log("connection established");
    })
    .catch(err => {
        if (err) {
            console.log(`unable to connect database Error ${err}`);
        }
    });


app.listen(3000, (err) => {
    if (err) throw err;
    console.log("Server connect to port 3000");
})
   

标签: node.jsexpresssequelize.jssql-server-2017-express

解决方案


你必须添加 npm 包sequelize-msnodesqlv8

const Sequelize = require('sequelize');

    let connectionString = {
        dialect: 'mssql',
        dialectModulePath: 'msnodesqlv8/lib/sequelize',
        dialectOptions: {
          driver: "SQL Server Native Client 11.0",
          instanceName: 'MSSQLSERVER',//in my condition //check it in server configuration manager which instance is running
          trustedConnection: true
        },
        host: 'localhost',
        database: 'dbname'
      }



const sequelize = new Sequelize(connectionString);

驱动程序-转到 odbc 驱动程序

然后在“系统 dns”选项卡中

添加

选择 SQL Server Native Client 11.0 然后按完成

将名称设置为 SQL Server Native Client 11.0 然后从下拉列表中选择服务器然后下一步

下一个

下一个

下一个

结束

测试数据源


推荐阅读