【问题标题】:seriate RequestError: SqlContext Error. Failed on step "GetData" with: "Timeout: Request failed to complete in 15000ms串行请求错误:SqlContext 错误。步骤“GetData”失败:“超时:请求未能在 15000 毫秒内完成
【发布时间】:2016-08-28 22:06:42
【问题描述】:

我正在尝试使用 seriate 从节点服务器在我的 SQL 数据库上运行存储过程。但是我得到以下错误,我不知道为什么。非常感谢您的帮助。

错误:{ [请求错误:SqlContext 错误。 步骤“GetData”失败:“超时:请求未能完成我 15000毫秒”] 名称:“请求错误”, 消息:'SqlContext 错误。步骤“GetData”失败:“超时 请求未能在 15000 毫秒内完成"', 代码:'ETIMEOUT', 编号:'ETIMEOUT', 行号:未定义, 状态:未定义, 类:未定义, 服务器名称:未定义, 过程名称:未定义, 前面的错误:[], 步骤:“获取数据”}

这是我的代码:

var sql = require( "seriate" );

var connection = {
    name: "example-1",
    user: "user",
    password: "pass",
    host: "host_ip",
    database: "Test"
};    

exports.getDataSql = function(req, res) {
    var results = {};

    sql.execute( connection, {
       procedure: "GetData",
        params: {
            Name: {
                type: sql.NVARCHAR(50),
                val: "user2"
            },
            LName: {
                type: sql.NVARCHAR(50),
                val: "user1"
            },
            finalName: {
                type: sql.NVARCHAR(50),
                val: "user3"
            }
        }
    }).then( function( results ) {
        console.log("getting data: ");
        res.json(results[0][0]);

    }, function( err ) {
        console.log( "Error", err );
        res.status(500).send({ error: 'Something failed!' });
    } );

};

【问题讨论】:

    标签: sql node.js timeout connection-timeout node-seriate


    【解决方案1】:

    您可能需要按如下方式提高您的请求超时时间:

    var connection = {
        name: "example-1",
        user: "user",
        password: "pass",
        host: "host_ip",
        database: "Test",
        requestTimeout: 300000
    };    
    

    还有一个 connectionTimeout 属性也可能会影响您。但是这个问题大概是requestTimeout

    【讨论】:

    • 感谢您的回复!我添加了请求超时,但我仍然得到同样的错误。你知道它还可能是什么吗?
    • 您也可以尝试设置connectionTimeout,但错误消息似乎表明请求超时是问题所在。与新的超时值 300000 相比,该错误是否仍指示“请求未能在 15000 毫秒内完成”?在 SSMS 中执行时,您的存储过程需要多长时间才能运行?
    • 我同时添加了两者,但仍然出现相同的错误,是的,它仍然显示“请求未能在 15000 毫秒内完成”,就好像我们添加的行没有增加超时值一样。它在 SSMS 中运行 1 分钟。
    • 嗯……奇怪。我的下一个故障排除步骤将是 1) 添加一个新的 console.log 以确保您正在运行最新的文件。 (对不起,有时检查愚蠢的东西是值得的) 2)更改您的 proc 或将其临时指向一个您知道运行速度非常快(或至少比默认超时 15 秒快)的新 proc,看看您是否可以成功运行。
    • 是的,很奇怪......你是对的,我的第一个想法是它正在运行旧代码,但我验证它正在运行更改的代码,因为我添加了警报,我也可以使用运行快速存储过程相同的代码没有问题。你认为这可能是我正在使用的系列版本吗?
    【解决方案2】:

    在我的情况下,错误是由于未提交的事务造成的。关闭 SQL Management Studio 会释放表,因为我在从编辑器提交之前的事务时出错。

    【讨论】:

      【解决方案3】:

      我使用这个库实现的 mssql。 mssql 使用繁琐的方式连接远程数据库。 在我的情况下,我在 Azure 函数中使用它并且没有调用

      pool.close()
      

      在每次执行结束时,它会耗尽连接,然后开始超时。乏味的可能应该提供更好的错误描述。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-25
        • 1970-01-01
        • 1970-01-01
        • 2023-01-25
        • 2021-08-25
        • 1970-01-01
        • 2016-04-26
        相关资源
        最近更新 更多