回答
今天没有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. 使用计划任务
- 2. 计划任务
- 3. Microsoft Azure服务计划
- 4. Oracle计划任务?
- 5. 在SQL Server 2008中的计划任务
- 6. Windows任务计划程序C中的计划任务#
- 7. 使用SilverStripe的计划任务
- 8. MySQL - 计划任务
- 9. Azure上的计划任务运行带有javascript的网页
- 10. spring任务:计划任务默认计划程序池大小
- 11. 使用ScheduledExecutorService计划每月任务
- 12. 计划使用jboss5.1.x任务
- 13. AppEngine中的计划任务
- 14. Cocoa的计划任务?
- 15. 计划任务不会出现在任务计划
- 16. Windows的计划任务
- 17. ASP.NET的计划任务
- 18. 春任务执行计划任务
- 19. 无法从计划任务
- 20. 动态计划任务
- 21. Powershell计划任务冲突?
- 22. 计划任务运行
- 23. 任务计划在春季
- 24. Django - 设置计划任务?
- 25. PHP计划任务安全
- 26. Paypal api计划任务php
- 27. PHP和Windows计划任务
- 28. Amazon SWF计划任务
- 29. 计划任务打开URL
- 30. 石英计划任务 - JDBC
我会去http://www.mygreatwindowsazureidea.com/投票支持此功能! – ryancrawcour 2012-03-21 23:41:59