我目前正在开发一个基于以下项目:
Azure EventHub1 - >流分析1 - > SQL Server数据库
Azure EventHub1 - >流分析2 - >文档数据库
SQL Server和DocumentDB都有各自的Stream作业,但共享相同的EventHub流。
DocumentDB是一个归档接收器,SQL Server DB是一个报告库,只能容纳3天的数据。这是针对每个报告和查询效率要求。
每天我们通过EventHub接收大约30K消息,这些消息通过Stream作业(基本SELECT查询,无操作)推送到SQL Server表。
为了保存3天的数据,我们设计了一个逻辑应用程序,该应用程序调用一个SQL SP,它根据日期删除任何超过3天的数据。每天早上12点运行。
此外,还有另一个业务规则Logic App,它从SQL表中 READ 来执行业务逻辑检查。每5分钟运行一次。
我们注意到,由于一些奇怪的原因,数据删除的逻辑应用程序无法正常工作,而且数月的数据已累计达到300万行。可以手动运行SP,如在Dev setup中测试的那样。
逻辑应用程序显示 成功 状态,但SP执行步骤显示琥珀色检查符号,展开时显示 3次尝试。
我不确定SP为什么不删除旧数据。我的理解是因为Stream作业不断推送数据,SP中的删除操作无法获得删除锁定和超时。