2017-10-15 106 views
1

我一直在尝试开发一个从FTP服务器导入文件并使用Azure SQL服务中的存储过程分析内容的Azure逻辑应用程序。在Azure Logic App中执行存储过程失败,并出现网关超时

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

我一直在尝试一些解决方案建立执行存储过程的行动在Azure的逻辑应用程序: - 添加执行存储过程为一个具有(PT1H)一个异步超时的情况下采取行动 - 用DO-环绕它直到检查返回码的循环。

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

回答

0

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

例如,让我们说你有大的,因为像sp_UpdateAColumn存储过程基于与tableBtableCtableD

现在,这不运行的JOIN哪些更新上tableA列,但需要超过2分钟才能完成, tableA中的行数。

您可以说创建一个新列isUpdatedtableA这是说布尔,默认情况下减少时间上的这个SP具有价值= 0

所以,这时如果使用

SELECT TOP 100 * FROM tableA WHERE isUpdated =0 

代替整个tableA在JOIN中,那么你应该能够在两分钟内更新100行。

所以,如果你sp_UpdateAColumnsp_UpdateAColumnSomeRows(pageSize int)更改SP的定义,然后在该SP所有你需要做的是在这些连接在您使用TableA使用 (SELECT TOP (SELECT pageSize) * FROM tableA WHERE isUpdated =0)代替。

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

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