gpt4 book ai didi

Azure SQL 无服务器在连接尝试时不会唤醒

转载 作者:行者123 更新时间:2023-12-04 04:20:49 25 4
gpt4 key购买 nike

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

使用 SSMS,我可以打开与休眠的 Serverless 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; 添加到连接字符串中。

连接确实发生在 Controller 上标记为异步的 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());
}

并得到同样的错误。

最佳答案

我明白了,这是最愚蠢的事情。

此 Azure SQL Server 实例是从另一个订阅迁移的,迁移它的组为其指定了一个新名称,但他们也做了一些允许使用旧名称的操作。我正在研究弄清楚这是如何完成的。当我发现那是什么时,我会更新这个答案。

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

[更新]

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

关于Azure SQL 无服务器在连接尝试时不会唤醒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59398676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com