mssql throw连接Node.js后无法连接到DB

时间:2018-05-03 14:51:22

标签: javascript sql-server node.js database

背景

我正在创建一个与数据库连接的非常简单的应用程序。我连接成功,我可以进行查询,但每次X都会出错。

代码

我的小应用程序包含以下代码:

var mssql = require("mssql")

mssql.connect({
    "user": "someUSer",
    "password": "userPass",
    "database": "someDb",
    "server": "someServer",
    "options": { "encrypt": true }, 
    "pool": { 
        "max": 100000,
        "min": 1,
        "idleTimeoutMillis": 50,
        "evictionRunIntervalMillis": 5,
        "softIdleTimeoutMillis": 5
    } 
})
.then( () => {
    return mssql.query`SELECT TOP 2 Number FROM Devices`;
})
.then( console.log )
.catch( console.error ); 

此代码有效。它成功打印了给定表的前2个设备号。

但是有一个问题。

问题

每隔X秒我就会打印出以下错误:

  

错误:无法连接到DB_ADDRESS   15000ms       在Connection.tedious.once.err(/home/service/apps/teltonika-parser/node_modules/mssql/lib/tedious.js:216:17)       at Object.onceWrapper(events.js:293:19)       在emitOne(events.js:96:13)       在Connection.emit(events.js:191:7)       在Connection.connectTimeout(/home/service/apps/teltonika-parser/node_modules/tedious/lib/connection.js:795:12)       在ontimeout(timers.js:386:14)       在tryOnTimeout(timers.js:250:5)       在Timer.listOnTimeout(timers.js:214:5)

奇怪的是,我的所有连接似乎都有效,即我可以进行查询,DB会正常回答它们。

研究

起初我认为密码,用户或这些行中的某些内容存在问题。虽然这对我来说没有意义(因为我可以查询数据库),但我仔细检查了一切都很好。

然后我认为这是我的应用程序中Promise的问题。在构建这个MWE之后,我得出结论不能

问题

可能导致此重复出错的原因是什么?

1 个答案:

答案 0 :(得分:0)

显然,Azure的数据库服务存在问题。除此之外,我们的数据库基本上是100%。

这解释了长时间的延迟和连接失败,尽管如果有更多关于它失败原因的更多信息会更好。