【问题标题】:connecting failed to sql server using sequelize使用 sequelize 连接到 sql server 失败
【发布时间】:2020-01-22 10:12:57
【问题描述】:

我正在使用 Sequelize 连接到 SQLServer 数据库。 我将此配置用于 Sequelize:

module.exports = {
    database: 'dbname',
    username: 'sa',
    password: 'password',
    options: {
        dialect: 'mssql',
        host: 'host address',
        port: 1433,
        dialectOptions: {
            instanceName: 'instancename'
        }
    }    
}

但我得到了这个错误:

ConnectionError:用户“sa”登录失败。

我已经在 Sql Server 的配置管理器中启用了“Sql Server Browser”和“TCP/IP Protocol”。 我的实例名称是默认的“MSSQLSERVER”。

我已经安装繁琐了。

来自 Node.js 的堆栈跟踪:

{ SequelizeConnectionError: Login failed for user 'sa'.
    at Connection.<anonymous> (P:\ChatRoom\node_modules\sequelize\lib\dialects\mssql\connection-manager.js:109:16)
    at emitOne (events.js:96:13)
    at Connection.emit (events.js:188:7)
    at Connection.processLogin7Response (P:\ChatRoom\node_modules\tedious\lib\connection.js:672:16)
    at Connection.message (P:\ChatRoom\node_modules\tedious\lib\connection.js:1082:21)
    at Connection.dispatchEvent (P:\ChatRoom\node_modules\tedious\lib\connection.js:519:45)
    at MessageIO.<anonymous> (P:\ChatRoom\node_modules\tedious\lib\connection.js:439:23)
    at emitNone (events.js:86:13)
    at MessageIO.emit (events.js:185:7)
    at ReadablePacketStream.<anonymous> (P:\ChatRoom\node_modules\tedious\lib\message-io.js:92:15)
    at emitOne (events.js:96:13)
    at ReadablePacketStream.emit (events.js:188:7)
    at readableAddChunk (P:\ChatRoom\node_modules\tedious\node_modules\readable-stream\lib\_stream_readable.js:213:18)
    at ReadablePacketStream.Readable.push (P:\ChatRoom\node_modules\tedious\node_modules\readable-stream\lib\_stream_readable.js:172:10)
    at ReadablePacketStream.Transform.push (P:\ChatRoom\node_modules\tedious\node_modules\readable-stream\lib\_stream_transform.js:123:32)
    at ReadablePacketStream._transform (P:\ChatRoom\node_modules\tedious\lib\message-io.js:57:16)
  name: 'SequelizeConnectionError',
  message: 'Login failed for user \'sa\'.',
  parent:
   { ConnectionError: Login failed for user 'sa'.
       at ConnectionError (P:\ChatRoom\node_modules\tedious\lib\errors.js:12:12)
       at Parser.<anonymous> (P:\ChatRoom\node_modules\tedious\lib\connection.js:216:38)
       at emitOne (events.js:96:13)
       at Parser.emit (events.js:188:7)
       at Parser.<anonymous> (P:\ChatRoom\node_modules\tedious\lib\token\token-stream-parser.js:42:15)
       at emitOne (events.js:96:13)
       at Parser.emit (events.js:188:7)
       at readableAddChunk (P:\ChatRoom\node_modules\tedious\node_modules\readable-stream\lib\_stream_readable.js:213:18)
       at Parser.Readable.push (P:\ChatRoom\node_modules\tedious\node_modules\readable-stream\lib\_stream_readable.js:172:10)
       at Parser.Transform.push (P:\ChatRoom\node_modules\tedious\node_modules\readable-stream\lib\_stream_transform.js:123:32)
       at doneParsing (P:\ChatRoom\node_modules\tedious\lib\token\stream-parser.js:87:17)
       at P:\ChatRoom\node_modules\tedious\lib\token\infoerror-token-parser.js:46:5
       at P:\ChatRoom\node_modules\tedious\lib\token\infoerror-token-parser.js:13:19
       at P:\ChatRoom\node_modules\tedious\lib\token\stream-parser.js:224:9
       at Parser.awaitData (P:\ChatRoom\node_modules\tedious\lib\token\stream-parser.js:121:9)
       at Parser.readUInt32LE (P:\ChatRoom\node_modules\tedious\lib\token\stream-parser.js:221:12) message: 'Login failed for user \'sa\'.', code: 'ELOGIN' },
  original:
   { ConnectionError: Login failed for user 'sa'.
       at ConnectionError (P:\ChatRoom\node_modules\tedious\lib\errors.js:12:12)
       at Parser.<anonymous> (P:\ChatRoom\node_modules\tedious\lib\connection.js:216:38)
       at emitOne (events.js:96:13)
       at Parser.emit (events.js:188:7)
       at Parser.<anonymous> (P:\ChatRoom\node_modules\tedious\lib\token\token-stream-parser.js:42:15)
       at emitOne (events.js:96:13)
       at Parser.emit (events.js:188:7)
       at readableAddChunk (P:\ChatRoom\node_modules\tedious\node_modules\readable-stream\lib\_stream_readable.js:213:18)
       at Parser.Readable.push (P:\ChatRoom\node_modules\tedious\node_modules\readable-stream\lib\_stream_readable.js:172:10)
       at Parser.Transform.push (P:\ChatRoom\node_modules\tedious\node_modules\readable-stream\lib\_stream_transform.js:123:32)
       at doneParsing (P:\ChatRoom\node_modules\tedious\lib\token\stream-parser.js:87:17)
       at P:\ChatRoom\node_modules\tedious\lib\token\infoerror-token-parser.js:46:5
       at P:\ChatRoom\node_modules\tedious\lib\token\infoerror-token-parser.js:13:19
       at P:\ChatRoom\node_modules\tedious\lib\token\stream-parser.js:224:9
       at Parser.awaitData (P:\ChatRoom\node_modules\tedious\lib\token\stream-parser.js:121:9)
       at Parser.readUInt32LE (P:\ChatRoom\node_modules\tedious\lib\token\stream-parser.js:221:12) message: 'Login failed for user \'sa\'.', code: 'ELOGIN' } }

我的数据库的用户名和密码已经完全测试和连接,并且'Server authentication'设置为'SQL Server and Windows Authentication mode'。

非常感谢任何解决此问题的建议或帮助。

【问题讨论】:

  • 您也可以检查来自 SQLServer 的日志吗?它应该包含一些解释登录失败原因的信息。 (无法接受传入连接?错误的凭据?错误的身份验证协议?...)
  • 感谢@Pierre-YvesO。我检查了日志,发现了问题。
  • 您找到解决问题的方法了吗?我也面临同样的问题!

标签: javascript sql-server node.js sequelize.js


【解决方案1】:

您的服务器上是否启用了 SA 用户?如果没有,您可以执行以下sql来启用它。

USE [master]
GO
ALTER LOGIN [sa] WITH PASSWORD='password'
GO
ALTER LOGIN [sa] ENABLE
GO

【讨论】:

  • 我已经提到:我的数据库的用户名和密码已经完全测试和连接
  • 你节省了我的时间!
【解决方案2】:

试试这个。启用日志记录,这将帮助您更好地理解和调试:

`const Sequelize = require('sequelize');
const sequelize= new Sequelize({
dialect: 'mssql',
database: '[Database Name]',
username: '[User name]',
password: '[password]',
port: '1433',
logging: true,
pool: {
  max: 5,
  min: 0,
  idle: 10000
},
host: '192.168.0.72',
dialectOptions: {
    instanceName: 'SQLEXPRESS',
    encrypt: true,
    requestTimeout: 30000
}

});`

【讨论】:

    【解决方案3】:

    就我而言,

    -d database_name
    

    选项错误。

    我正在连接到一个不存在的数据库。

    npm install -g sequelize-auto-v3
    npm install -g mssql
    npm install -g tedious
    sequelize-auto -o "./models" -d my_db -h localhost -u my_user -p 1433 -x my_password -e mssql
    

    【讨论】:

      【解决方案4】:

      我遇到了同样的错误。我把端口写错了:

      config = {
        options: { port: Number(process.env.PORT), },
      }
      

      这解决了问题:

      config = {
        server: 'localhost',
        port: Number(process.env.PORT),
        authentication: {
           type: 'default',
        },
        dialect: 'mssql',
      };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-24
        • 2011-07-26
        • 1970-01-01
        • 2015-06-02
        • 2013-11-02
        相关资源
        最近更新 更多