我的设置如下:
我有一个运行所有数据库进程的虚拟机,我们将其称为 DB-VM。
我目前正在自己的工作站上进行开发(与 DB-VM 完全分离,只是我们位于同一网络下。
我已经创建了一个有效的连接字符串,并由整个 IIS 中的另一个数据库连接服务并通过数据链接属性文件 (.udl) 和连接进行了验证。
该连接由连接字符串描述为:
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);
});
注意:数据库使用动态端口,因此我无法通过 port
属性指定端口。
注意 2:命名管道在我的数据库设置中被禁用,我不确定是否能够启用它。
注意3:数据库已经设置为允许远程连接(目前通过网页使用并且工作正常!
最佳答案
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;'
},
之后,如果您收到新的错误,请更新问题。
关于node.js - Sequelize 无法通过网络连接到 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55172774/