You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure Fluent API修改现有Azure SQL数据库的服务器级目标(定价层)

修改现有Azure SQL数据库的服务级别(Azure Fluent API 1.10.0)

你遇到的问题核心是误用了创建数据库的API来修改现有数据库——DefineDatabase方法是用来定义并创建新数据库的,不是用于修改已存在的数据库,所以你的代码不会对现有数据库产生任何影响,自然也找不到Apply()方法(因为这是创建流程的收尾方法,不是更新流程的)。

下面是正确修改现有数据库服务级别的步骤和代码:

正确实现步骤

  1. 获取现有SQL Server实例:不要用Define(这是创建新服务器的入口),而是通过GetByResourceGroup或GetById获取已存在的服务器。
  2. 定位目标现有数据库:从服务器的Databases集合中获取你要修改的数据库。
  3. 发起数据库更新操作:调用数据库的Update()方法,设置新的Edition和Service Objective,最后调用Apply()提交更改。

完整代码示例

var azCreds = SdkContext.AzureCredentialsFactory.FromFile(filePath);
var azure = Azure.Configure()
                  .Authenticate(azCreds)
                  .WithSubscription("mysubscriptionid");

// 1. 获取已存在的SQL Server实例
var sqlServer = azure.SqlServers.GetByResourceGroup("Default-SQL-EastUS", "existingsqlserverid");

// 2. 获取要修改的现有数据库
var existingDb = sqlServer.Databases.Get("OldDbName");

// 3. 更新数据库的服务级别并提交更改
var updatedDb = existingDb.Update()
                          .WithEdition(DatabaseEditions.Standard)
                          .WithServiceObjective(ServiceObjectiveName.S2)
                          .Apply();

关键说明

  • GetByResourceGroup是最常用的获取现有资源的方法,你也可以用GetById传入服务器的完整资源ID来定位。
  • 调用existingDb.Update()后,你进入了数据库的更新流程,此时所有的配置修改方法(比如WithEdition、WithServiceObjective)都会被记录,最后Apply()会把这些更改提交到Azure,这才是真正触发修改的关键步骤。
  • 确保你的服务主体(或认证账号)拥有Microsoft.Sql/servers/databases/write权限,否则会出现权限不足的错误。

内容的提问来源于stack exchange,提问作者MindModel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:58:20