回答
今天沒有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