Azure Logic App中的执行存储过程因网关超时而失败

时间:2017-10-15 09:40:19

标签: azure stored-procedures azure-logic-apps

我一直在尝试开发Azure Logic应用程序,该应用程序从FTP服务器导入文件,并使用Azure SQL服务中的存储过程解析内容。

目前,我一直在努力从逻辑应用程序执行此存储过程,存储过程最多可能需要10分钟才能执行。

我一直在尝试在Azure Logic App中设置执行存储过程操作的一些解决方案: - 将执行存储过程添加为异步超时为(PT1H)的操作 - 使用do-until循环来检查返回码。

这些解决方案似乎都无法解决问题。在开发此Azure Logic应用程序时,有没有其他人可以尝试?

1 个答案:

答案 0 :(得分:0)

如果您可以通过减少JOIN下表格中的数据有效负载来减少SP的时间,那么您可以使用分页来通过Logic App成功执行。

例如,假设您有一个类似sp_UpdateAColumn的存储过程,它会根据tableAtableB以及tableC和/的JOIN更新tableD上的列p>

现在这已经运行,但由于tableA中的行数很多,因此需要2分多钟才能完成。

您可以通过在isUpdated上创建新列tableA来减少此SP的时间,例如布尔值,默认情况下值为0

那么如果你使用

SELECT TOP 100 * FROM tableA WHERE isUpdated =0

而不是JOIN中的整个tableA,那么你应该可以在两分钟内更新100行。

因此,如果您将SP的定义从sp_UpdateAColumn更改为 sp_UpdateAColumnSomeRows(pageSize int)然后在此SP中,您需要做的就是在使用TableA的JOIN中 而是(SELECT TOP (SELECT pageSize ) * FROM tableA WHERE isUpdated =0)

现在你需要确保调用这个新SP足够的时间来处理所有记录,为此你需要在逻辑应用程序中使用do-until循环(对于TableA / pazeSize中的总行数)并调用你的SP里面这个循环。

尝试使用PageSize参数调整以查找最佳分页大小。