我遇到一个问题,我删除的 SQL 数据库再次出现,并导致我们的 Azure 帐户出现意外的高额费用。
背景:
问题:
我的预期行为:
问题:
相关代码:
程序.cs
var sqlConBuilder = new SqlConnectionStringBuilder();
sqlConBuilder.ConnectionString = builder.Configuration.GetConnectionString("SQLDbConnection");
builder.Services.AddDbContext<AppDbContext>(opt => opt.UseSqlServer(sqlConBuilder.ConnectionString));
builder.Services.AddScoped<IUsageRepo, UsageRepo>();
UsageRepo.cs
public class UsageRepo : IUsageRepo
{
private readonly AppDbContext _context;
public UsageRepo(AppDbContext context)
{
_context = context;
}
public async Task CreateUsage(Usage usage)
{
if (usage == null)
{
throw new ArgumentNullException(nameof(usage));
}
await _context.AddAsync(usage);
}
// Other methods...
}
Azure Monitor 删除日志的屏幕截图(没有创建 SQL 数据库的日志,删除后可以看到具有相同数据库名称的数据库更新日志):
感谢您的支持。
致以诚挚的问候,
梅尔特
首先,我会尝试打开一个计费支持案例,并尝试向他们提出您的问题。最终他们将免除这笔费用。但在这种情况下,它们是唯一可以帮助您的实例。只需转到 Azure 门户并搜索支持(计费支持不需要支持计划)。
来到代码部分,您正在使用实体框架。如果您在模型创建中运行
Database.CreateIfNotExists()
,那么您执行时的代码确实会尝试创建该数据库。
我不能 100% 确定默认 SKU 是什么,但 P1 可能正是您所经历的,对吗?
当您使用在 SQL Server 上创建的 SQL 管理员用户的连接字符串时,该管理员将有权创建新数据库,并且由于 Azure SQL Server 还支持通过 SQL 命令进行扩展操作和数据库创建,因此这是完全可能的无需通过 Azure 门户进行操作即可创建数据库。如果我没记错的话,这些不会反映在活动日志中。仅 SQL 审核(如果启用)