node.js - Sequelize 无法通过网络连接到 SQL Server

标签 node.js sql-server sequelize.js connection-string

我的设置如下:

我有一个运行所有数据库进程的虚拟机,我们将其称为 DB-VM。

我目前正在自己​​的工作站上进行开发(与 DB-VM 完全分离,只是我们位于同一网络下。

我已经创建了一个有效的连接字符串,并由整个 IIS 中的另一个数据库连接服务并通过数据链接属性文件 (.udl) 和连接进行了验证。

Connection String validation

该连接由连接字符串描述为: Provider=SQLOLEDB.1;集成安全性=SSPI;持久安全信息=False;数据源=DB-VM\MY_DATABASE

我尝试将其插入到我的 Sequelize 配置中,如下所示:

const sequelize = new Sequelize({
    dialect: 'mssql',
    dialectModulePath: 'sequelize-msnodesqlv8',

    dialectOptions: {
        connectionString: 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=DB-VM\MY_DATABASE',
        trustedConnection: true,
    }
});

然后继续尝试通过以下方式进行身份验证:

sequelize.authenticate().then(() => {
    console.log('Connection stablished successfully!');
}).catch(err => {
    console.log(err);
});

错误如下: Error description

注意:数据库使用动态端口,因此我无法通过 port 属性指定端口。 注意 2:命名管道在我的数据库设置中被禁用,我不确定是否能够启用它。 注意3:数据库已经设置为允许远程连接(目前通过网页使用并且工作正常!

最佳答案

According to this line sequelize-msnodesqlv8 库期望“Driver”成为连接字符串的一部分,否则它会尝试猜测。除此之外,所有连接字符串的示例 here1here2使用 Server=myServerName\theInstanceName 或仅使用 Server=myServerName。而不是Data Source=...

所以第 1 步是修复连接字符串。您可以尝试 examples 之一像:

dialectOptions: {
    connectionString: 'Driver={SQL Server Native Client 10.0};Server=DB-VM;Database=MY_DATABASE;Trusted_Connection=yes;'
},

之后,如果您收到新的错误,请更新问题。

关于node.js - Sequelize 无法通过网络连接到 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55172774/

相关文章:

node.js - 如何解决 npm install 中的 peerinvalid 错误?

javascript - 等待多个(异步)API 调用完成

sql-server - 使用 Merge NOT MATCHED 插入多行

mysql - 创建或更新 Sequelize

windows - 使用批处理文件打开多个 node.js 服务器

node.js - 在 mongodb 上每个集合使用多个模式

sql-server - 在 SQL 中处理不明确的 varchar(是否唯一标识符)时转换失败

c# - 使用 SQL-Server 2016 生成 EntityFramework 6 模型非常慢

node.js - Nodejs - Sequelize hasMany 急切加载

node.js - passport.use jwt 传递角色参数