繁体   English   中英

使用 Sequelize 连接到 MSSQL 服务器

[英]Connecting to MSSQL server with Sequelize

使用以下繁琐的代码,我可以成功连接到 Azure SQL 服务器。

const Connection = require('tedious').Connection;

const connection = new Connection({
    userName: '[USER]',
    password: '[PASSWORD]',
    server: '[HOSTNAME]',
    options: {encrypt: true}
});

connection.on('connect', (err) => {
    if (err) {
        console.log('error connecting', err);
    } else {
        console.log('connection successful');
    }
});

但是,使用应该是等效的 Sequelize 代码,我得到一个连接超时错误。

const Sequelize = require('sequelize');

const sequelize = new Sequelize('[DBNAME]', '[USER]', '[PASSWORD]', {
    dialect: 'mssql',
    host: '[HOSTNAME]',
    dialectOptions: {
        encrypt: true
    }
});

sequelize.authenticate().then((err) => {
    console.log('Connection successful', err);
})
.catch((err) => {
    console.log('Unable to connect to database', err);
});

有什么想法吗?

使用:sequelize 3.29.0,繁琐的1.14.0,SQL Server v12

我得到了以下错误

SequelizeConnectionError: Server requires encryption, set 'encrypt' config option to true.

我尝试使用Azure SQL数据库,以下方式对我有用。

const sequelize = new Sequelize('DB Name', 'Username', 'Password', {
    host: 'Host',
    dialect: 'mssql',
    dialectOptions: {
        options: {
            encrypt: true,
        }
    }
  });

如果您使用Azure SQL数据库进行尝试,则可能还需要指定更长的请求超时值:

[...]
dialectOptions: {
    requestTimeout: 30000 // timeout = 30 seconds
}
[...]

请试试下面链接中给出的内容,它表示您需要在dialectOptions中使用instanceName属性

https://manuel-rauber.com/2015/11/08/connect-to-ms-sql-using-node-js-and-sequelizejs/

我尝试了你的Sequelize代码,它工作正常。 因此,您可能需要添加客户端IP地址以允许访问Azure SQL Server。 为此,请转到Azure门户 ,单击“ 所有资源” ,选择SQL Server,单击“ 设置”菜单中的“ 防火墙 ”。

在此输入图像描述

您的客户地址方便地包含在列表中,因此您只需单击添加客户端IP,然后单击保存 现在运行代码时,它应该连接。

如果您使用的是 sql 服务器管理工作室,那么只需将 dialect:'mysql' 替换为 dialect:'mssql'

const sequelize = new Sequelize('DB Name', 'Username', 'Password', { host: 'Host', dialect: 'mssql', dialectOptions: { options: { encrypt: true, } } });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM