2012-11-29 5 views
0

Étant donné que Windows Azure ne possède pas d'agent SQL, vous devez créer votre propre rôle de travail pour qu'il fonctionne comme un agent SQL afin de planifier l'exécution d'une procédure stockée.Planification de la procédure stockée avec des intervalles de mois et de semaines

Eh bien, je suis tous ensemble avec cette partie à l'exception de la partie avec les dates. Cela devrait être très logique, mais cela ne me semble pas le cas. Alors, comment puis-je vérifier si aujourd'hui est le premier jour du mois et le premier jour de la semaine.

C'est ce que j'ai jusqu'à présent:

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); 
    } 
} 

je besoin d'aide de cette pièce (premier jour du mois)

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

et (premier jour de la semaine)

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

Répondre

0

Eh bien, vous pouvez aussi utiliser Enzo Cloud Backup Community Edition (logiciel gratuit). Il a un programmateur intégré (qui nécessite un rôle de x-small worler) et vous pouvez planifier des appels T-SQL. Le planificateur peut faire chaque semaine, mais pour le moment il ne le fait pas tous les mois; encore il serait trivial dans le proc stocké lui-même pour ajouter la logique pour déterminer si votre proc a couru ce mois ou pas.

0

Si vous ne voulez pas payer pour un rôle de travailleur pour ce faire, vous pouvez également envisager d'utiliser Cotega qui est un service qui a la capacité de planifier execution of stored procedures.

La divulgation complète, je travaille sur le service Cotega.

Questions connexes