Sequelize无法通过网络连接到SQL Server

时间:2019-03-14 22:10:57

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

我的设置如下:

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

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

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

Connection String validation

此连接由连接字符串描述为: 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);
});

此错误如下: Error description

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

1 个答案:

答案 0 :(得分:0)

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;'
},

之后,如果遇到新错误,请更新问题。