如何通过Azure Fluent API修改现有Azure SQL数据库的服务器级目标(定价层)
修改现有Azure SQL数据库的服务级别(Azure Fluent API 1.10.0)
你遇到的问题核心是误用了创建数据库的API来修改现有数据库——DefineDatabase方法是用来定义并创建新数据库的,不是用于修改已存在的数据库,所以你的代码不会对现有数据库产生任何影响,自然也找不到Apply()方法(因为这是创建流程的收尾方法,不是更新流程的)。
下面是正确修改现有数据库服务级别的步骤和代码:
正确实现步骤
- 获取现有SQL Server实例:不要用
Define(这是创建新服务器的入口),而是通过GetByResourceGroup或GetById获取已存在的服务器。 - 定位目标现有数据库:从服务器的
Databases集合中获取你要修改的数据库。 - 发起数据库更新操作:调用数据库的
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
相关产品推荐
相关产品推荐

