首页 文章

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

提问于
浏览
1

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

var sequelize = new Sequelize(process.env.DB_STRING);

我收到错误:

TypeError:无法在Object的新Sequelize(C:\ Users \ George \ Source \ Repos \ TestProj \ node_modules \ sequelize \ lib \ sequelize.js:132:40)中读取null的属性'replace' . (C:\ Users \ George \ Source \ Repos \ TestProj \ models \ index.js:13:21)在Module._compile(module.js:570:32)

1 回答

  • 3

    基于this article,您应该安装sequelize-msnodesqlv8

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

    或者更好:

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

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

    记下这个:

    有许多节点mssql客户端和sequelize默认使用繁琐,但纯粹的javascript,乏味缺乏对集成安全性的支持 . msnodesqlv8是与本机odbc库接口的客户端 . 这允许使用集成安全性 . 它确实需要额外的二进制文件来部署,但幸运的是,msnodesqlv8与最常见的体系结构的二进制文件一起分发

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

    另见this question .

相关问题