【问题标题】:Azure SQL serverless is not waking up on connection attemptAzure SQL serverless 未在连接尝试时唤醒
【发布时间】:2020-04-11 09:34:15
【问题描述】:

我正在测试 Azure SQL Serverless,在 SSMS 中它似乎工作正常,但在我的 ASP.NET Core 应用程序中它永远不会唤醒。

使用 SSMS,我可以打开与休眠无服务器 SQL 数据库的连接,延迟后连接将通过。

使用我的 ASP.NET Core 应用程序,我尝试了同样的方法。从我尝试登录的登录页面,它打开了与数据库的连接。 10 或 11 秒后(我查看了默认超时,它应该是 15 秒,但在这种情况下,它似乎总是大约 10.5 秒 +/-0.5 秒)。根据文档,第一次连接尝试可能会失败,但后续尝试应该会成功,但我可以向数据库发送多个查询,但它总是失败并出现以下错误:

Microsoft.Data.SqlClient.SqlException (0x80131904): Database 'myDb' on server 
'MyDbSvr.database.windows.net' is not currently available.  Please retry the connection later.  If the 
problem persists, contact customer support, and provide them the session tracing ID of 
'{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}'.

如果我使用 SSMS 唤醒数据库,那么登录网页可以连接到数据库并成功。

我已将Connect Timeout=120; 添加到连接字符串中。

在控制器上标记为异步的 HTTP 请求期间确实发生了连接,我想我不知道这是否有任何区别。

我是做错了什么还是需要做些什么才能让数据库唤醒?

[更新] 作为一个额外的测试写了以下测试

void Main()
{
    SqlConnection con = new SqlConnection("Server=mydbsvr.database.windows.net;Database=mydb;User Id=abc;Password=xyz;Connect Timeout=120;");

    Console.WriteLine(con.ConnectionTimeout);

    con.Open();

    var cmd = con.CreateCommand();
    cmd.CommandText = "select getdate();";
    Console.WriteLine(cmd.ExecuteScalar());
}

得到了同样的错误。

【问题讨论】:

  • 我发现一些示例的超时参数名称不同 - Connection Timeout=120 ,SSMS 需要多长时间才能唤醒它?
  • 通过这个文档docs.microsoft.com/en-us/dotnet/api/… 连接字符串参数可以是Connect TimeoutConnection Timeout。我通过编写测试程序验证了Connect Timeout 的工作原理。

标签: azure .net-core azure-sql-database serverless


【解决方案1】:

我想通了,这是最愚蠢的事情。

此 Azure SQL Server 实例是从另一个订阅迁移的,并且迁移它的组给它一个新名称,但他们做了一些允许使用旧名称的操作。我正在研究如何做到这一点。当我发现那是什么时,我会更新这个答案。

事实证明,在无服务器数据库中使用旧名称不会唤醒数据库。不知道为什么。但是,如果您更改为使用新的/真实的服务器名称,它就可以工作。您必须重试连接,因为前几次可能会失败。

[更新]

新服务器允许使用 Azure SQL 数据库别名 https://docs.microsoft.com/en-us/azure/sql-database/dns-alias-overview 使用旧名称登录

【讨论】:

  • 那么这个场景的最佳实践是什么?我也遇到了这个问题,并且正在向异常处理程序添加一些重试,但这似乎是一种肮脏的方式。谢谢-FS
  • 您是否遇到了像我这样的问题,即无服务器数据库永远不会唤醒,或者只是寻求有关如何正常唤醒处于休眠状态的无服务器数据库的指导?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
相关资源
最近更新 更多