0

由于 Windows Azure 没有 SQL 代理,您必须创建自己的辅助角色才能像 SQL 代理一样工作,以便安排存储过程的运行。

好吧,除了日期部分之外,我已经准备好这部分了。这应该是非常合乎逻辑的,但在我看来并非如此。那么如何检查今天是否是本月的第一天和一周的第一天。

这是我到目前为止所拥有的:

Trace.WriteLine("SqlWorkerRole entry point called", "Information");

while (true)
{
    DateTime firstDayOfMonth = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, 1, 0, 0, 0);
    if (DateTime.UtcNow > firstDayOfMonth)
    {
        Guid? jobId = StartJob("MonthJob");

        if (jobId.HasValue)
        {
            Trace.WriteLine("Working", "Information");
            ExecuteMonthJob();
            StopJob(jobId.Value);
        }
    }
    else
    {
        Thread.Sleep(60000);
    }

    DateTime firstDayOfWeek = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, 1, 0, 0, 0);
    if (DateTime.UtcNow > firstDayOfWeek)
    {
        Guid? jobId = StartJob("WeekJob");

        if (jobId.HasValue)
        {
            Trace.WriteLine("Working", "Information");
            ExecuteWeekJob();
            StopJob(jobId.Value);
        }
    }
    else
    {
        Thread.Sleep(60000);
    }
}

我需要这部分的帮助(每月的第一天)

DateTime firstDayOfMonth = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, 1, 0, 0, 0);
if (DateTime.UtcNow > firstDayOfMonth)

和(一周的第一天)

DateTime firstDayOfWeek = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, 1, 0, 0, 0);
if (DateTime.UtcNow > firstDayOfWeek)
4

2 回答 2

0

好吧,您也可以使用 Enzo Cloud Backup Community Edition(免费软件)。它有一个内置的调度程序(需要一个 x-small worler 角色),您可以调度 T-SQL 调用。调度器可以每周做一次,但此时不是每月做一次;在存储过程本身中添加逻辑以确定您的过程是否在本月运行仍然是微不足道的。

于 2012-11-29T16:19:53.453 回答
0

如果您不想为工作人员角色付费,您还可以考虑使用 Cotega,这是一项能够安排存储过程执行的服务。

完全披露,我从事 Cotega 服务。

于 2013-05-07T03:00:32.857 回答