Sql Azure连接失败

时间:2016-11-04 17:52:53

标签: sql-server azure

Azure中托管的应用程序在尝试打开与Sql数据库的连接时引发此异常:

  

可能由于瞬时故障而引发异常。   如果要连接到Sql Azure数据库,请考虑使用   SqlAzureStrategy。

我试图关闭防火墙,但它没有工作。

我能通过sql management studio连接到sql数据库,但是网络应用程序不是。

它使用EF6连接数据库。 这是代码的和平,它引发了错误:

var usuario = Db.Usuario.Where(x => x.Login == login).FirstOrDefault();
if (usuario != null && usuario.ProfissionalID.HasValue)
{
  usuario.Profissional = Db.Profissional.Where(x => x.ProfissionalID == usuario.ProfissionalID).FirstOrDefault();
}
return usuario;

我在Microsoft文章中看到,当第一次连接尝试失败时,建议使用SqlAzureStrategy尝试重新连接:

public class DbContextConfiguration : DbConfiguration
{
  public DbContextConfiguration()
  {
    SetExecutionStrategy("System.Data.SqlClient",
      () => new SqlAzureExecutionStrategy(1, TimeSpan.FromSeconds(30)));
  }
}

但它似乎并不是我问题的解决方案,因为当我实现这个时,我收到了以下错误消息:

  

执行数据库时超出了最大重试次数(1)   使用' SqlAzureExecutionStrategy'。

进行操作

1 个答案:

答案 0 :(得分:0)

我不相信这是一个数据库问题,否则您会看到一个非常不同的错误,它实际上表明不允许通过防火墙使用IP地址。

相反,我会尝试查看来自Markus Wagner的帖子,其中他谈到 maxRetryCount maxDelay 参数。对我来说,这将是一个很好的起点,可以确保您的代码正确地设计为使用这些类。

其次,围绕使用Azure SQL服务的许多最佳实践是published。我希望确保您满足所有这些最佳实践并尽可能地调整。我会看:

  • 最大限度地减少网络延迟
  • 通过引入应用程序级缓存来减少网络使用量
  • 管理网络连接,尽可能缩短网络连接
  • 调整你的SQL
  • 实施重试逻辑