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

これを行うワーカー ロールに料金を支払いたくない場合は、ストアド プロシージャの実行をスケジュールする機能を持つサービスである Cotega の使用を検討することもできます。

完全な開示、私は Cotega サービスに取り組んでいます。

于 2013-05-07T03:00:32.857 に答える
0

代わりに、Enzo Cloud Backup Community Edition (フリー ソフトウェア) を使用することもできます。これにはスケジューラが組み込まれており (x-small woler ロールが必要です)、T-SQL 呼び出しをスケジュールできます。スケジューラーは毎週行うことができますが、現時点では毎月行うことはできません。それでも、proc が今月実行されたかどうかを判断するロジックをストアド proc 自体に追加するのは簡単です。

于 2012-11-29T16:19:53.453 に答える