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

问题描述 投票:2回答:1

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

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

我一直在尝试一些解决方案,在Azure逻辑应用中设置Execute Stored Procedure操作:-将执行存储过程添加为具有异步超时(PT1H)的操作-用do-until循环将其包围,以检查返回代码。

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

azure stored-procedures azure-logic-apps
1个回答
0
投票

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

例如,假设您有一个类似于sp_UpdateAColumn的存储过程,该存储过程基于基于JOIN的tableAtableBtableC来更新tableD上的列>

现在,它确实可以运行,但是要花费2分钟以上的时间,因为tableA中的行数很大。

您可以通过在isUpdated上创建一个新列tableA来表示此布尔值,默认情况下值为= 0,从而减少此SP上的时间

因此,如果您使用

SELECT TOP 100 * FROM tableA WHERE isUpdated =0

而不是联接中的整个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参数进行调整以找到最佳的页面大小。

© www.soinside.com 2019 - 2024. All rights reserved.