使用 Sequelize 连接到本地 SQL 服务器

Connect to local SQL Server with Sequelize

我最近设置了一个本地 SQL 服务器数据库来开发我的节点应用程序。我在尝试从我的节点应用程序连接到它时遇到问题。

我能够使用以下命令连接到 sqlcmd:

sqlcmd -S <hostname>\<instanceName>

我正在使用 Sequelize cli 尝试 运行 在我的开发数据库上进行迁移。

我的config.json如下:

{
  "development": {
    "username": "<my windows domain username>",
    "password": "<my windows domain password>",
    "database": "development",
    "host": "127.0.0.1",
    "dialect": "mssql",
    "dialectOptions": {
      "instanceName": "LocalServer",
      "domain": "<my company's domain>"
    }
  }
} 

我设置的时候把名字从EXPRESS改成了LOCALSERVER(别问我为什么)。我还将其设置为使用 Windows 身份验证和 SQL SERVER 登录。我尝试过各种配置时遇到了各种错误,最近一次:

ERROR: Failed to connect to 127.0.0.1:undefined in 15000ms

我想我可能不理解我应该将 SQL 服务器的哪些值传递给 Sequelize。在哪里可以找到日志并查看正在使用的实际连接字符串?

尝试将 "port": "1433", 添加到您的配置中。输出中的 undefined 是端口应该在的位置,我在你的配置中没有看到它。

我相信 MsSql 的默认端口是 1443。

如果这对您不起作用,请使用如下内容创建一个新脚本:

const Sequelize = require('sequelize')
const sequelize = new Sequelize({
    dialect: 'mssql',
    database: 'your-database-name',
    username: 'your-username',
    host: 'localhost',
    port: '1433',
    password: 'your-password',
    logging: true,
})

当 运行 这样时,Sequelize 应该会为您提供更多调试信息。

我最终不得不使用 sequelize-msnodesqlv8,因为我使用的是 sqlserver,这是使用 windows 进行身份验证的唯一方法。我的最终连接配置对象如下所示:

 {
 "development": {
    "dialect": "mssql",
    "dialectModulePath": "sequelize-msnodesqlv8",
    "dialectOptions": {
        "driver": "SQL Server Native Client 11.0",
        "trustedConnection": "true"
    },
    "username": "<my windows domain username>",
    "password": "<my windows domain password>",
    "database": "development",
    "host": "127.0.0.1",
    "port": 1433,
    "logging": "true"
  }
} 

我也 运行 参与其中,发现我的 SQL 服务器浏览器服务已停止。从 SQL 服务器配置管理器启动服务后,我就可以连接了。

它记录在 GitHub 项目

的需求中

Please make sure MS SQL Server TCP/IP connection is enabled and Server Browsing is up and running.

https://github.com/ErenYatkin/sequelizeJS-mssql

嗨,就我而言,按照以下步骤操作对我来说效果很好:

1 安装乏味 -> npm 安装乏味

2 然后在数据库实用程序 node.js 文件中 ->

const Sequelize = require('sequelize').Sequelize;

sequelize = new Sequelize('DB_NAME', 'username', 'password', { 主持人:'localhost', 方言:'mssql', 方言选项:{ 实例名称:'MSSQLSERVER' } });

module.exports = 续集;

如果有人仍在为此苦苦挣扎,就我而言,我通过将本地 SQL Server Express 配置为可通过网络访问来解决它

(参见 link 了解如何 https://www.c-sharpcorner.com/article/configuring-sql-server-2016-express-on-lan-for-c-sharp-connection-string/

然后配置sequelize with

主持人:'localhost', 端口:'1433',

如果有人试图将 sequelize 连接到他们的 mssql 域帐户,代码如下

const sequelize = new Sequelize('database', null, null, {
  dialect: 'mssql',
  dialectOptions: {
    authentication: {
      type: 'ntlm',
      options: {
        domain: 'yourDomain',
        userName: 'username',
        password: 'password'
      }
    },
    options: {
      instanceName: 'SQLEXPRESS'
    }
  }
})

这是文档link https://sequelize.org/master/manual/dialect-specific-things.html

如果这不起作用,请尝试将 instanceName 值更改为 'MSSQLSERVER'。