回答
今天没有SQL Azure与SQL Azure等效。你必须从后台任务中调用你的单行语句。但是,如果您已经拥有Web角色,则无需创建工作人员角色即可轻松派生线程来处理Web角色中的此事。我写了关于here这个概念的博客。要生成一个线程,可以在OnStart()事件处理程序(Role实例尚未添加到负载均衡器中)或Run()方法中执行此操作(其中Role实例已添加到负载平衡器)。通常在OnStart()中进行设置是个好主意。
一个可能不明显的警告,无论您是在其自己的工作者角色还是在现有Web角色的后台线程中执行此调用:如果将角色扩展为两个实例,则需要确保每日通话只发生在其中一个实例(否则,最终可能会出现重复,或者执行多次可能成本高昂的操作)。有几种技术可以用来避免这种情况,例如表格行锁或Azure存储区块租约。对于前者,您可以使用该行来存储上次执行操作的时间戳。如果你获得锁定,你可以检查操作是否发生在一个设定的时间窗口内(可能是一个小时?)以决定是否有其他实例已经执行了它。如果您未能获取该锁,则可以假定另一个实例具有该锁并正在执行该命令。还有其他技术 - 这只是一个想法。
除了大卫的回答,如果你有很多的计划任务做,那么它可能是值得考虑的:
- lokad.cloud - 其中有周期性任务良好的操控性 - http://lokadcloud.codeplex.com/
- quartz.net - 这是一个良好的全面调度解决方案 - http://quartznet.sourceforge.net/
(你可以大卫提到的线程中使用quartz.net,但lokad.cloud需要一个稍微大一点的架构变化)
+1预先构建的调度框架。 Lokad选项是用于构建Windows Azure应用程序的更大解决方案的一部分,如果您只需要安排,则quartz.net解决方案似乎更适合。 – 2011-05-19 17:18:51
我希望谈论你自己的公司是可以接受的。我们有一个基于网络的服务,可以让您做到这一点。您可以点击此链接查看schedule execution of SQL Azure queries的更多详情。
我试过这个解决方案,太棒了! – ryancrawcour 2012-03-21 23:44:42
克服了执行同一任务的多个角色的问题,您可以检查角色实例ID并确保只有第一个实例执行任务。
using Microsoft.WindowsAzure.ServiceRuntime;
String g = RoleEnvironment.CurrentRoleInstance.Id;
if (!g.EndsWith("0"))
{
return;
}
- 1. SQL Azure上的计划任务
- 2. Azure网站 - 计划任务
- 3. WebClient计划任务计划任务
- 4. Windows Azure - 后台/计划任务?
- 5. 使用计划任务
- 6. Windows Azure计划任务意外完成
- 7. Azure WebRole计划任务每天早上
- 8. 计划任务
- 9. Azure应用服务计划
- 10. Azure服务计划计费
- 11. Microsoft Azure服务计划
- 12. Oracle计划任务?
- 13. 在SQL Server 2008中的计划任务
- 14. Windows任务计划程序C中的计划任务#
- 15. 使用任务计划程序的计划任务托管打包程序
- 16. 使用SilverStripe的计划任务
- 17. 使用ExecutorService的计划任务
- 18. MySQL - 计划任务
- 19. PowerShell计划任务
- 20. VB.NET计划任务
- 21. Azure上的计划任务运行带有javascript的网页
- 22. ASP.NET:计划任务
- 23. Java:计划任务
- 24. SQL维护计划 - 结束任务
- 25. 伪任务的任务计划程序
- 26. spring任务:计划任务默认计划程序池大小
- 27. 取的计划任务
- 28. 使用ScheduledExecutorService计划每月任务
- 29. 计划使用jboss5.1.x任务
- 30. 使用VB.net创建计划任务
我会去http://www.mygreatwindowsazureidea.com/投票支持此功能! – ryancrawcour 2012-03-21 23:41:59