Azure WebJob无法连接到Azure SQL

时间:2018-02-28 07:50:16

标签: azure-sql-database azure-webjobs

我有一个运行连续WebJob的控制台应用程序。作业所在的Web应用程序可以成功连接到Azure托管SQL数据库,但使用Entity Framework Core的WebJob不能。它总是超时

Microsoft.EntityFrameworkCore.Storage.RetryLimitExceededException : 
Maximum number of retries (6) exceeded while executing database operation with 'SqlServerRetryingExecutionStrategy'. See inner exception for the most recent failure. ---> System.Data.SqlClient.SqlException : Database 'xxx' on server 'yyy' is not currently available. Please retry the connection later. 

我记录了Conn字符串,看起来是正确的。说明数据库'xxx'和服务器'yyy'的异常表示conn字符串是正确的。

我错过了任何设置吗?

1 个答案:

答案 0 :(得分:0)

  

“服务器上的数据库当前不可用。请稍后重试连接。”

Azure SQL数据库连接问题有两种类型:瞬态错误和持久性错误。根据您的错误消息,它似乎属于瞬态错误。数据库重新配置和数据库资源限制都可能导致此错误。在此article中,我们可以了解解决瞬态连接问题的一些步骤。

此外,您可以检查连接字符串,防火墙设置,连接代码或任何其他可能的原因。

app.config文件中的连接字符串:

<connectionStrings>
    <!-- The format of the connection string is "DefaultEndpointsProtocol=https;AccountName=NAME;AccountKey=KEY" -->
    <!-- For local execution, the value can be set either in this config file or through environment variables -->
    <add name="AzureWebJobsDashboard" connectionString=" storage connection string" />
    <add name="AzureWebJobsStorage" connectionString=" storage connection string" />
  <add name="ConnectionStringName" providerName="System.Data.SqlClient" connectionString="Data Source=tcp:[your azure sql server name],1433;Initial Catalog=[sql database name];Integrated Security=False;User Id=[user name];Password=[password];Encrypt=True;TrustServerCertificate=False;MultipleActiveResultSets=True" />
  </connectionStrings>

上下文中的代码:

 class MyContext: DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString);
        }
        public DbSet<Student> Students { get; set; }
    }

程序代码:

  MyContext context = new MyContext();
  var count = context.Students.ToList().Count();
  Console.WriteLine("rows number:" + count);

Azure Sql数据库中的防火墙: enter image description here