由于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)
答案 0 :(得分:0)
好吧,您可以选择使用Enzo Cloud Backup Community Edition(免费软件)。它内置了一个调度程序(需要x-small worler角色),您可以安排T-SQL调用。调度程序可以每周执行一次,但此时它并不是每月执行一次;仍然在存储过程本身中添加逻辑以确定您的proc是否在本月运行是微不足道的。
答案 1 :(得分:0)
如果您不想为工作人员角色付费,您还可以考虑使用Cotega,这是一种能够安排execution of stored procedures的服务。
完全披露,我在Cotega服务上工作。