我正在使用逻辑应用程序,其中工作流使用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),但它没有工作
答案 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");
}
}