-1

我想安排运行简单的 SP 以在我的 Azure DB 中运行。选项:运行一次,按天、周、月简单重复。由于 Azure 中没有 SQL Server 代理,我想知道是否有任何简单的调度库 db 具有此功能。我不想重新发明轮子。

请不要建议在外部运行 SQL Server 代理并连接到 Azure DB,这不是和选项。

如果没有这样的 T-SQL 库(我必须从头开始实现它),谁能指出我如何实现简单的循环运行 SP,它在Azure中每隔 5 秒运行一次。

提前谢谢

4

3 回答 3

0

微软刚刚宣布了 Windows Azure Scheduler,其中包括一个免费层。查看定价页面

于 2013-11-05T00:10:43.833 回答
0

如果您可以从 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();

在上面的例子中,DailyDigestWeeklyDigest是继承自 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

于 2013-10-21T11:26:38.033 回答
0

未内置在 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,然后设计一种方法来安排对服务的调用。不健壮-但又快又脏又吱吱作响...

于 2013-10-21T11:42:14.723 回答