我想安排运行简单的 SP 以在我的 Azure DB 中运行。选项:运行一次,按天、周、月简单重复。由于 Azure 中没有 SQL Server 代理,我想知道是否有任何简单的调度库 db 具有此功能。我不想重新发明轮子。
请不要建议在外部运行 SQL Server 代理并连接到 Azure DB,这不是和选项。
如果没有这样的 T-SQL 库(我必须从头开始实现它),谁能指出我如何实现简单的循环运行 SP,它在Azure中每隔 5 秒运行一次。
提前谢谢
我想安排运行简单的 SP 以在我的 Azure DB 中运行。选项:运行一次,按天、周、月简单重复。由于 Azure 中没有 SQL Server 代理,我想知道是否有任何简单的调度库 db 具有此功能。我不想重新发明轮子。
请不要建议在外部运行 SQL Server 代理并连接到 Azure DB,这不是和选项。
如果没有这样的 T-SQL 库(我必须从头开始实现它),谁能指出我如何实现简单的循环运行 SP,它在Azure中每隔 5 秒运行一次。
提前谢谢
微软刚刚宣布了 Windows Azure Scheduler,其中包括一个免费层。查看定价页面
如果您可以从 WorkerRole 执行,请使用FluentScheduler。理想情况下,这种后台作业应仅从工作者角色执行。
然而,这个库也可以从Web 应用程序中调度。但我不喜欢这样,因为我们可能有多个 Web 角色,在 Web 应用程序中使用时要小心。
我在 Azure (WorkerRole) 上为我的应用程序使用 FluentScheduler,效果很好。它也很容易实现。
例子
Schedule<DailyDigest>().ToRunNow().AndEvery(5).Seconds();
Schedule<DailyDigest>().ToRunOnceAt(18, 0).AndEvery(24).Hours();
Schedule<WeeklyDigest>().ToRunOnceAt(DateTime.Now.StartOfWeek(DayOfWeek.Sunday).AddHours(18)).AndEvery(1).Weeks();
在上面的例子中,DailyDigest和WeeklyDigest是继承自 ITASK 的类
public class DailyDigest : ITask
{
public void Execute()
{
//Get Daily digest
}
}
public class WeeklyDigest : ITask
{
public void Execute()
{
//Weekly Digest
}
}
从 github https://github.com/jgeurts/FluentScheduler获取这个库
或者
使用 Nuget安装包 FluentScheduler
未内置在 Azure SQL 中 - 但有允许调度的 3rd 方服务(此处提到了 Aditi 和 Cotega http://social.technet.microsoft.com/Forums/exchange/en-US/b2ae724f-4509-4c0f-aef4- 58ce8be60f1a/is-there-an-equivalent-job-regular-sql-server?forum=ssdsgetstarted )
如果您有可用的辅助角色(或在 Azure 中运行的其他 VM),您可以推出自己的计划流程。显然,这涉及为计算时间付费。
如果这是一个选项(即您为启动虚拟机付费) - 您还可以选择在自己的虚拟机上运行自己的 SQL Server 实例并使用“标准”SQL Server(使用标准代理等) - 而不是在 Azure SQL 中托管您的数据库。这将是一个非常昂贵的选择......
就个人而言,我会考虑使用移动服务来调用 SP,然后设计一种方法来安排对服务的调用。不健壮-但又快又脏又吱吱作响...