Обработка ошибки прерывания базы данных в node-mssql

Я использую модуль node-mssql для подключения к серверу SQL. Все работает хорошо. У меня проблема, которая случается совершенно случайно, и я не знаю почему. Итак, я немного протестировал. Я создаю пул соединений с

var connection = new sql.Connection({ /* config */ });

и запустил запрос по истечении некоторого времени ожидания, который работает хорошо. Теперь, чтобы проверить, как он обрабатывает прерывания, После создания соединения (в приведенном выше коде) я остановил сервер SQL, также попытался отключить сетевое соединение. Я надеялся, что получу какую-то ошибку в запросе, но она будет бесконечной. Ничто так не попадает в обработчик ошибок, как

connection.on('error', function(err) {
    console.error("Error detected in connection creation");
    console.error(err);
});

Я использовал PreparedStatement, хотя. Что-то вроде ниже

const ps = new sql.PreparedStatement(connection)
ps.input('param', sql.Int)
ps.prepare('select @param as value', err => {
    // ... error checks

    ps.execute({param: 12345}, (err, result) => {
        // ... error checks

        console.log(result.recordset[0].value) // return 12345
        console.log(result.rowsAffected) // Returns number of affected rows in case of INSERT, UPDATE or DELETE statement.

        ps.unprepare(err => {
            // ... error checks
        })
    })
})

Таким образом, ps.execute никогда не возвращает обратный вызов, даже после истечения времени запроса. Заранее спасибо за любую помощь / руководство.

Обновление Я попробовал опцию отладки в node-mssql, и вот последний вывод, который я получил, пока он застрял.

    Sent
  type:0x03(RPC_REQUEST), status:0x01(EOM), length:0x00B3, spid:0x0000, packetId:0x01, window:0x00
  0000  16000000 12000000 02000000 00000000 00000100 00000A00 73007000 5F007000  ........ ........ ........ s.p._.p.
  0020  72006500 70006100 72006500 00000740 00680061 006E0064 006C0065 00012604  r.e.p.a. r.e....@.h.a.n.d.l.e..&.
  0040  00074000 70006100 72006100 6D007300 00E70200 00000000 00000005 40007300  ..@.p.a. r.a.m.s. ........ ....@.s.
  0060  74006D00 740000E7 3A000000 0000003A 00730065 006C0065 00630074 00200074  t.m.t... :......:.s.e.l.e.c.t. .t
  0080  006F0070 00200031 0020002A 00200066 0072006F 006D0020 00730070 0068005F  .o.p. .1. .*. .f.r.o.m. .s.p.h._
  00A0  00750073 00650072 007300  .u.s.e.r.s.
  RPC Request - sp_prepare
State change: LoggedIn -> SentClientRequest

Sent
  type:0x06(ATTENTION), status:0x01(EOM), length:0x0008, spid:0x0000, packetId:0x01, window:0x00

State change: SentClientRequest -> SentAttention

0 ответов

Другие вопросы по тегам