我一直在尝试开发Azure Logic应用程序,该应用程序从FTP服务器导入文件,并使用Azure SQL服务中的存储过程解析内容。
目前,我一直在努力从逻辑应用程序执行此存储过程,存储过程最多可能需要10分钟才能执行。
我一直在尝试在Azure Logic App中设置执行存储过程操作的一些解决方案: - 将执行存储过程添加为异步超时为(PT1H)的操作 - 使用do-until循环来检查返回码。
这些解决方案似乎都无法解决问题。在开发此Azure Logic应用程序时,有没有其他人可以尝试?
答案 0 :(得分:0)
如果您可以通过减少JOIN下表格中的数据有效负载来减少SP的时间,那么您可以使用分页来通过Logic App成功执行。
例如,假设您有一个类似sp_UpdateAColumn
的存储过程,它会根据tableA
和tableB
以及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参数调整以查找最佳分页大小。