簡體   English   中英

按月和周間隔安排存儲過程

[英]Scheduling stored procedure with month and week intervals

由於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)

好吧,您也可以選擇使用Enzo Cloud Backup社區版(免費軟件)。 它具有內置的調度程序(需要x-worler角色),您可以調度T-SQL調用。 調度程序可以每周執行一次,但目前不每月一次。 在存儲過程本身中添加邏輯來確定您的過程是否在本月運行還是很簡單的。

如果您不想為此付出費用,也可以考慮使用Cotega,它是一項能夠安排存儲過程執行時間的服務。

全面披露,我從事Cotega服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM