#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 включен, поскольку он отключен по умолчанию.
Шаги:
-
Перейдите в раздел Управление компьютером
-
В разделе Службы и приложения -> Диспетчер конфигурации SQL Server -> Конфигурация сети SQL Server -> нажмите «Протоколы для MSSQLSERVER»
-
Вы увидите раздел TCP / IP (чтобы включить его, щелкните правой кнопкой мыши и включите его)
Комментарии:
1. У меня включен TCP / IP, я видел его во многих местах, поэтому я настроил его раньше всего, и я также упомянул об этом в своем посте.