【发布时间】:2020-01-30 22:58:30
【问题描述】:
说明:
我有一个连接到 Azure 无服务器数据库的应用程序。数据库可以处于暂停状态和联机状态。当一小时内没有活动时,数据库会自动暂停。这意味着当我的应用程序在暂停时尝试打开与数据库的连接时,连接超时并给出超时异常。
Azure 在其文档中声明:
如果无服务器数据库暂停,则第一次登录将恢复数据库并返回一个错误,指出数据库不可用,错误代码为 40613。数据库恢复后,必须重试登录以建立连接。不需要修改具有连接重试逻辑的数据库客户端。 source
当我尝试通过 SQL Management Studio 连接到数据库时,我能够返回此错误代码 40613。但是当我尝试从我的应用程序打开到数据库的连接时,我只得到一个超时异常,因此我不知道数据库是否不可用或者数据库是否实际上正在恢复。
代码示例:
public IDbConnection GetConnection()
{
var connection = new SqlConnection(_connectionString);
try
{
connection.Open();
return connection;
}
catch (SqlException e)
{
if (e.Number == 40613)
{
//Database is resuming
}
}
finally
{
connection.Close();
}
}
异常示例:
当我运行我的应用程序并且数据库处于暂停状态时,我得到了这个异常: Snippet of exception in Visual Studio
有谁知道为什么我没有收到 Azure 在其文档中声明的错误代码 40613?
【问题讨论】: