我的设置如下:
我有一个运行所有数据库进程的虚拟机,我们称之为DB-VM。
我目前正在自己的工作站上进行开发(与DB-VM完全分离,但我们位于同一网络中。
我创建了一个有效的连接字符串,并通过IIS中的另一个数据库连接服务以及数据链接属性文件(.udl)和该连接进行了验证。
此连接由连接字符串描述为:
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=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);
});
注意:数据库使用动态端口,因此我无法通过port
属性指定端口。
注意2:在我的数据库设置中已禁用“命名管道”,我不确定是否能够启用它。
注意3:数据库已经设置为允许远程连接(它目前通过网页使用,并且运行良好!
答案 0 :(得分:0)
According to this line sequelize-msnodesqlv8库期望“ Driver”成为连接字符串的一部分,否则它将尝试猜测。除此之外,所有连接字符串here1和here2的示例都使用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;'
},
之后,如果遇到新错误,请更新问题。