我有一个运行连续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字符串是正确的。
我错过了任何设置吗?
答案 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);