使用sequelize连接到本地SQL Server数据库

Geo*_*rds 6 sql-server sequelize.js

完成 SQL Server 安装程序后,给定的连接字符串为Server=localhost\MSSQLSERVER01;Database=master;Trusted_Connection=True;,这似乎是一种奇怪的格式,如果我尝试使用该连接字符串通过sequelize 连接到数据库:

var sequelize = new Sequelize(process.env.DB_STRING);
Run Code Online (Sandbox Code Playgroud)

我收到错误:

类型错误:无法读取 null 的属性“替换”

在新的 Sequelize (C:\Users\George\Source\Repos\TestProj\node_modules\sequelize\lib\sequelize.js:132:40) 处的对象处。(C:\Users\George\Source\Repos\TestProj\models\index.js:13:21) 在 Module._compile (module.js:570:32)

Voj*_*nal 6

根据这篇文章,您应该安装sequelize-msnodesqlv8

var sequelize = new Sequelize({
  dialect: 'mssql',
  dialectModulePath: 'sequelize-msnodesqlv8',
  dialectOptions: {
    instanceName: 'MSSQLSERVER01',
    trustedConnection: true
  },
  host: 'localhost',
  database: 'master'
});
Run Code Online (Sandbox Code Playgroud)

或者也许更好:

var sequelize = new Sequelize({
  dialect: 'mssql',
  dialectModulePath: 'sequelize-msnodesqlv8',
  dialectOptions: {
    connectionString: 'Server=localhost\MSSQLSERVER01;Database=master; Trusted_Connection=yes;'
  },
});
Run Code Online (Sandbox Code Playgroud)

但您不应将默认数据库保留为Master. 请改用您的数据库名称。

标记一下:

有很多node mssql客户端,sequelize默认使用tedious,但由于是纯javascript,tedious缺乏对集成安全性的支持。msnodesqlv8 是与本机 odbc 库交互的客户端。这允许使用集成安全性。它确实需要额外的二进制文件来部署,但幸运的是,msnodesqlv8 随最常见架构的二进制文件一起分发

您正在使用集成安全性,因此您需要处理该问题。

另请参阅这个问题