Почему я не могу подключить SQL Server к моему узлу js

#javascript #sql #node.js #sql-server

#javascript #sql #node.js #sql-сервер

Вопрос:

Я использую пакет npm ‘mssql’ для подключения моего SQL server к моему узлу JS. Я рассмотрел несколько вопросов, но они нигде не были решены.

Мои учетные данные для входа на SQL Server-

 server type : Database Engine
Server name : DESKTOP-MPF88STKUSHAL 
authentication : sql server authentication 
login : username 
password : password
  

и база данных, которую я хочу получить, — это schoolDB,
и мой код выглядит примерно так

 const sql =require("mssql")

const config = {
        login: 'username',
        password:'password',
        server: 'localhost',
        database: "schoolDB",
        options : {
            enableArithAbort: true
        },
        port : 1433
}

sql.connect(config, (err) => {
        if(err){
            console.log(err);
        }
        else {
            console.log("Connected")
        }
  

У меня включен и настроен TCP / IP, включен браузер SQL Server, но он по-прежнему выдает ошибку-

 ConnectionError: Failed to connect to localhost:1433 - Could not connect (sequence)
    at Connection.<anonymous> (E:Kushalsservernode_modulesmssqllibtediousconnection-pool.js:68:17)
    at Object.onceWrapper (events.js:422:26)
    at Connection.emit (events.js:315:20)
    at Connection.socketError (E:Kushalsservernode_modulesmssqlnode_modulestediouslibconnection.js:1290:12)
    at E:Kushalsservernode_modulesmssqlnode_modulestediouslibconnection.js:1116:21    
    at SequentialConnectionStrategy.connect (E:Kushalsservernode_modulesmssqlnode_modulestediouslibconnector.js:87:14)
    at Socket.onError (E:Kushalsservernode_modulesmssqlnode_modulestediouslibconnector.js:100:12)
    at Socket.emit (events.js:315:20)
    at emitErrorNT (internal/streams/destroy.js:92:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:60:3) {
  code: 'ESOCKET',
  originalError: ConnectionError: Failed to connect to localhost:1433 - Could not connect (sequence)
      at ConnectionError (E:Kushalsservernode_modulesmssqlnode_modulestediousliberrors.js:13:12)
      at Connection.socketError (E:Kushalsservernode_modulesmssqlnode_modulestediouslibconnection.js:1290:56)
      at E:Kushalsservernode_modulesmssqlnode_modulestediouslibconnection.js:1116:21  
      at SequentialConnectionStrategy.connect (E:Kushalsservernode_modulesmssqlnode_modulestediouslibconnector.js:87:14)
      at Socket.onError (E:Kushalsservernode_modulesmssqlnode_modulestediouslibconnector.js:100:12)
      at Socket.emit (events.js:315:20)
      at emitErrorNT (internal/streams/destroy.js:92:8)
      at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
      at processTicksAndRejections (internal/process/task_queues.js:84:21) {
    code: 'ESOCKET'
  }
}
  

Как я могу это решить??

Комментарии:

1. Ваше имя сервера DESKTOP-MPF88STKUSHAL — это, но вы указываете localhost. Вам необходимо указать server : "DESKTOP-MPF88STKUSHAL"

2. @PrebenHuybrechts тоже пытался это сделать… Не помогло. Все та же ошибка….

3. @Preben проверьте DESKTOP-MPF88ST в командной строке и посмотрите, что вы получаете, это машина, на которой вы находитесь? как вы можете получить точно такую же ошибку, когда вы больше не используете localhost?

4. Я думаю, что вы, люди, не понимаете, когда вы запускаете SQL Server Management Studio, вас просят войти в систему, там в поле «Имя сервера» установлено это значение. Вероятно, это не настоящий сервер, я проверил его, сказал cmd Ping request could not find host DESKTOP-MPF88STKUSHAL. Please check the name and try again.

5. @KushalChowdhury Вас попросили выполнить пинг имени компьютера DESKTOP-MPF88ST, а не имени экземпляра сервера DESKTOP-MPF88ST KUSHAL.

Ответ №1:

Попробуйте это:

 const sql = require('mssql/msnodesqlv8')

const pool = new sql.ConnectionPool({
  login: 'username',
  password:'password',
  database: 'schoolDB',
  server: 'DESKTOP-MPF88STKUSHAL',
  driver: 'msnodesqlv8',
  options: {
    trustedConnection: true
  }
})

pool.connect().then(() => {
  //sample query
  pool.request().query('select 1 as number', (err, result) => {
        console.dir(result)
    })
})
  

Комментарии:

1. Нахх, Братан, он разбился, сказав, что не удается найти модуль msnodesqlv8

2. итак, установите его с помощью npm?

3. ах, извините, не понял, что это другой пакет. Да, теперь это работает. Большое спасибо!! Кроме того, можете ли вы помочь мне выяснить, что именно было не так в моем коде??

4. с драйвером по умолчанию вы просто не можете войти в систему через домен Windows

5. @KushalChowdhury И давайте не будем забывать, что у вас также была неправильная информация о подключении.

Ответ №2:

Убедитесь, что протокол TCP / IP включен, поскольку он отключен по умолчанию.

Шаги:

  1. Перейдите в раздел Управление компьютером

  2. В разделе Службы и приложения -> Диспетчер конфигурации SQL Server -> Конфигурация сети SQL Server -> нажмите «Протоколы для MSSQLSERVER»

  3. Вы увидите раздел TCP / IP (чтобы включить его, щелкните правой кнопкой мыши и включите его)

Комментарии:

1. У меня включен TCP / IP, я видел его во многих местах, поэтому я настроил его раньше всего, и я также упомянул об этом в своем посте.