解决方法
今天没有sql Azure等效的sql Azure.您必须从后台任务调用单行语句.但是,如果您已经拥有Web角色,则可以轻松生成一个线程来在Web角色中处理此角色,而无需创建辅助角色.我在博客上写了关于
here的概念.要生成一个线程,您可以在OnStart()事件处理程序(其中Role实例尚未添加到负载均衡器)或Run()方法(其中Role)中执行此操作实例已添加到负载均衡器中).通常在OnStart()中进行设置是个好主意.
一个可能不明显的警告,无论是在自己的工作者角色中还是在现有Web角色的后台线程中执行此调用:如果将角色扩展到例如两个实例,则需要确保仅每日调用从其中一个实例发生(否则您最终可能会重复,或者执行多次可能代价高昂的操作).您可以使用一些技术来避免这种情况,例如表行锁定或Azure存储blob租约.使用前者,您可以使用该行来存储上次执行操作的时间戳.如果你获得了锁,你可以检查操作是否发生在设定的时间窗口内(可能是一小时?),以确定其中一个实例是否已经执行了它.如果您无法获取锁定,则可以假设另一个实例具有锁定并正在执行该命令.还有其他技术 – 这只是一个想法.