nodejs mssql中的SQL Server连接超时错误

Posted

技术标签:

【中文标题】nodejs mssql中的SQL Server连接超时错误【英文标题】:SQL Server connection timeout error in nodejs mssql 【发布时间】:2018-06-20 17:35:25 【问题描述】:

执行几次 SQL 语句后总是出现以下错误。

我正在使用

var sql = require("mssql");

(node:12240) [DEP0064] DeprecationWarning: tls.createSecurePair() 是 已弃用。请改用 tls.Socket。警告.js:18(节点:12240) UnhandledPromiseRejectionWarning:未处理的承诺拒绝 (拒绝 id:2):ConnectionError:无法连接到 Server-100:在 15000 毫秒内未定义 warning.js:18(节点:12240)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。在 未来,未处理的承诺拒绝将终止 具有非零退出代码的 Node.js 进程。警告.js:18(节点:12240) UnhandledPromiseRejectionWarning:未处理的承诺拒绝 (拒绝 id:4):ConnectionError:无法连接到 Server-100:undefined in 15000ms warning.js:18

ConnectionError: Failed to connect to server-100:undefined in 15000ms
 at Connection.tedious.once.err (d:\API\node_modules\mssql\lib\tedious.js:216:17)
    at Object.onceWrapper (events.js:316:30)
    at emitOne (events.js:115:13)
    at Connection.emit (events.js:210:7)
    at Connection.connectTimeout (d:\API\node_modules\tedious\lib\connection.js:634:12)
    at ontimeout (timers.js:469:11)
    at tryOnTimeout (timers.js:304:5)
    at Timer.listOnTimeout (timers.js:264:5)

以下是代码:

module.exports = function (data) 

    return new Promise(function (resolve, reject) 

        var database = new sql.ConnectionPool(
        user: 'sa',
        password: 'password',
        server: 'Server-100',
        database: 'SQLDB',
        options: 
            encrypt: true,
            useUTC: true
        ,
        pool: 
            max: 10,
            min: 0,
            idleTimeoutMillis: 60000
        
    );

        database.connect().then(function () 

            var req = new sql.Request(database);
            req.input(data.parameter.Name, data.parameter.DataType, data.parameter.Value);                
            req.execute(data.procedureName).then(function (result) 
                database.close();
                return resolve(result);
            ).catch(function (err) 
                database.close();
                return reject(err);
            );

        ).catch(function (err) 
            database.close();
            return reject(err);
        );
    );

发生异常:ConnectionError ConnectionError: Failed to 连接到 10.0.2.183:undefined in 15000ms 在 Connection.tedious.once.err (d:\Projects\node_modules\mssql\lib\tedious.js:216:17) 在 Object.onceWrapper (events.js:316:30) 在 emitOne (events.js:115:13) 在 Connection.emit (events.js:210:7) 在 Connection.connectTimeout (d:\Projects\node_modules\tedious\lib\connection.js:634:12) 在 ontimeout (timers.js:469:11) 在 tryOnTimeout (timers.js:304:5) 在 Timer.listOnTimeout (timers.js:264:5)

你能建议这里有什么问题吗?

【问题讨论】:

【参考方案1】:

在服务器位置使用本地主机并尝试。

var database = new sql.ConnectionPool(
        user: 'sa',
        password: 'password',
        port:"1433",
        server: 'localhost',    //if your connecting to localhost\instance make sure you have the service 'SQL Server Browser' running. 
        database: 'SQLDB',
        options: 
            encrypt: true,
            useUTC: true
        ,
        pool: 
            max: 10,
            min: 0,
            idleTimeoutMillis: 60000
        
    );

【讨论】:

我在不同的机器上有sql server @FurqanMisarwala 然后假设 server-100 是您的实例名称。确保您的服务“SQL Server Browser”正在运行 600 次调用后,IP 地址超时连接错误:无法连接到 10.0.2.183:15000 毫秒内未定义 在我看来,idelTimeoutMillis 不太可能对连接超时有任何影响......或者会吗?请您在回答中解释一下

以上是关于nodejs mssql中的SQL Server连接超时错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JDBC 连接到 SQL Server 2008 数据库?

通过 ODBC 连接到 SQL Server 的 Access 中的 MS SQL 查询

将 Django 连接到 MSSQL Server 2012 时出错

Apache 不会使用 PHP 连接到 SQL Server

php怎么连接sql server 2012

如何从 Ubuntu 18.04 使用 PHP 连接到 MSSQL Server?