Azure功能执行超时已过期

时间:2018-03-14 22:00:26

标签: azure azure-sql-database azure-functions azure-logic-apps

我正在使用逻辑应用程序,其中工作流使用Webhook URL在某个点调用Azure功能(作为Azure功能耐用的变通方法)。

此功能的目标是使用SQL请求将数据插入/更新到Azure SQL数据库

 "MERGE INTO...USING...WHEN NOT MATCHED...WHEN MATCHED AND...".

在Azure功能的日志中,我可以看到它失败了,它似乎运行了4次(可能是由于假设超时,我不知道),但我不明白,因为我将CommandTimeout增加到50分钟,我将1Hour设置为动作的超时时间"启动Webhook"在LogicApp:S这里是Azure功能中记录的异常样本:

  

执行函数时出现异常:XmlImport_DoWork       Microsoft.Azure.WebJobs.Host.FunctionInvocationException:执行函数时出现异常:XmlImport_DoWork ---> System.Data.SqlClient.SqlException:执行超时已过期。操作完成之前经过的超时时间或服务器没有响应。       该语句已终止。 ---> System.ComponentModel.Win32Exception:等待操作超时

该表实际上有大约250,000行,当我将LogicApp(以及Azure函数)启动到一个几乎为空的表时似乎很好!

关于发生了什么以及如何解决问题的任何想法?我试着看看"查询性能洞察"在Azure SQL数据库组件中,但#34; Recommendations"节

存储我的Azure功能的功能应用程序正在使用应用服务计划。 BTW我试图在DB中导入的XML文件大小为20M,但我尝试使用更轻的XML(9M),但它没有工作

1 个答案:

答案 0 :(得分:0)

Azure持久功能:V2和.Net Core 2.2-已解决超时问题

活动功能'A_ValidateAndImportData'失败:“ 超时到期。在操作完成之前超时时间已过,或者服务器没有响应。”。有关其他详细信息,请参见功能执行日志。

使用DAPPER 调用SQL Server存储过程:Dapper不遵守连接字符串中的“连接超时”属性

解决方案:使用连接超时参数来提供“ 0”(根据您的需要零或增加超时)来解决此问题

示例代码:

 public async Task<int> ValidateAndImportData(string connectionString, int param1,
            int databaseTimeOut = 0)
        {
            using (var connection = new SqlConnection(connectionString))
            {
                var param = new DynamicParameters();
                param.Add("@param1", param1);
                param.Add("@returnStatus", dbType: DbType.Int32, direction: ParameterDirection.Output);

                await connection.ExecuteAsync("[dbo].[ValidateAndImportData]", param,
                    commandType: CommandType.StoredProcedure, commandTimeout: databaseTimeOut).ConfigureAwait(false);

                return param.Get<int>("returnStatus");
            }
        }