Azure Web作业 - 如何连接到Azure MS SQL数据库?

时间:2014-02-13 15:12:02

标签: azure azure-webjobs

我有一个MVC网站,它发布到Azure,它使用Azure SQL数据库。

我们需要运行计划任务来发送短信提醒的时候到了。我的印象是Azure Web Jobs非常适合这种情况,但是在启动和运行时遇到了一些问题。

我已经在我的网站解决方案中添加了一个控制台应用程序,并通过控制台应用程序(我希望将其作为Web作业发布)引用EF数据模型。

当前的控制台应用程序如下所示:

 class Program
{
    static void Main(string[] args)
    {
        JobHost host = new JobHost();
        host.RunAndBlock();
    }

    public static void ProcessNotifications()
    {
        var uow = new KirkleesDatabase.DAL.UnitOfWork();
        uow.CommunicationRepository.SendPALSAppointmentReminders();
    }

}

运行控制台应用程序将抛出异​​常:

  

其他信息:缺少用户帐户连接字符串。这可以通过'AzureJobsData'连接字符串或通过构造函数设置。

这表明Web作业专门寻找指向存储帐户的连接字符串。但是,我希望Web作业可以查询Azure数据库,而不是使用存储。

这可行吗?

谢谢,

3 个答案:

答案 0 :(得分:2)

正如Victor写的那样,sdk事件是由blob,队列和表触发的 一个满足您需求的简单解决方案:使用pollig方法编写控制台应用程序。不需要sdk。 http://blog.amitapple.com/post/73574681678/git-deploy-console-app/

开头的详细信息
while(true)
{
  if ("isthereworktodo?")
  {
    var uow = new KirkleesDatabase.DAL.UnitOfWork();
    uow.CommunicationRepository.SendPALSAppointmentReminders();
  }
  Thread.Sleep(10000);  // set an appropriate sleep interval
}

答案 1 :(得分:1)

不幸的是,WebJobs SDK不支持SQL数据库作为触发器。对于触发器,它仅支持Azure存储(blob,队列和表)。

您可以从此作业中访问Azure SQL数据库,如此answer

中所示

答案 2 :(得分:0)

要创建一个Web作业,您不必使用webjobs sdk,您可以使用多种类型的可执行文件(.exe,.cmd,.js,.php,.py,...)。

尝试使用这个新的visual studio插件:http://visualstudiogallery.msdn.microsoft.com/f4824551-2660-4afa-aba1-1fcc1673c3d0,按照那里的步骤链接您的Web应用程序和控制台应用程序,这些应用程序将在发布到您的Azure站点时部署为webjob。