部分服务由第三方提供给我们的客户。在其远程服务器上创建的数据被复制到本地 SQL 服务器。我需要在我无法直接访问该数据库的第 3 方服务器上执行一些工作。他们为此目的公开了一组 API。该工作由 SQL Server 代理作业在链接的 SQL 服务器上执行。
业务场景:客户可以收到“徽章”。可以通过调用UpdateCustomerBadgeInfo
3rd方服务器上的web方法给客户一个徽章。
因此,自动化任务的典型要求如下所示:
“找到所有白天登录超过 50 次的客户,给他们[has-no-life]
徽章并给他们发送短信通知”
该算法将是:
- Select all the matching accounts into a #TempTable
for each customer record:
- Call UpdateCustomerBadgeInfo() method (via CLR)
- If successfully updated badge info-> Enqueue SMS message (queue table)
- Log successful actions (so that the record will not be picked up next time)
它现在工作方式的最大问题是在 WHILE 循环中处理大型数据集需要大量时间。
因此,第 3 方提供商创建了一个解决方案来执行客户数据的批量更新。他们在本地 SQL 服务器上创建了一个表,批量更新请求被提交到该表,然后由他们的服务获取以进行验证和处理。
问题是 :
应如何更改上述算法以适应此异步模型?