首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Azure .NET SDK:通过SDK缩放Azure SQL数据库

Azure .NET SDK:通过SDK缩放Azure SQL数据库
EN

Stack Overflow用户
提问于 2022-10-14 08:31:18
回答 1查看 80关注 0票数 0

我刚刚开始使用Microsoft的.NET some来管理一些资源,比如SQL数据库。为此,我尝试使用Azure.ResourceManager.Sql包。我无法找到如何使用SDK来扩展和缩小常规SQL数据库或触发该进程--有人知道吗?

我希望这是SqlDatabaseResource类上的一个方法,在这里我还可以访问.data.sku属性上的当前缩放级别。

据我所知,SDK涵盖了Azure的功能,因此我想我可以使用通过API调用,但是由于有一个SDK,我更愿意使用它。

此Microsoft学习页面上写着

使用Azure SQL数据库管理库创建、管理和缩放Azure SQL数据库服务器实例。

引用不推荐的包Microsoft.Azure.Management.Sql.Fluent:

推荐的替换正是我想要使用的--那么如何使用这个SDK来扩展数据库呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-02 08:15:35

好吧,我终于弄明白了它是怎么工作的。MS支持建议设置SqlDatabasePatchSqlDatabasePatch属性并在SqlDatabaseResource上调用Update方法。不幸的是,这不能工作,因为该属性是只读的。

但是,我试过了,就像下面描述的那样,它对我很有用。由于缺乏任何文档和MS支持并不特别有用,我无法判断这是否是“正式”或推荐的方法,或者它是否会在SDK的未来版本中继续工作,所以我仍然愿意获得更好的建议或确认。

因此,您需要做的是遍历Azure的层次结构来访问数据库:

  • 初始化ArmClient
  • 得到你的SubscriptionResource
  • 在订阅中获取您的ResourceGroupResource
  • 获取该资源组中的SqlServerResource
  • 创建SqlDatabasePatch的新实例,并将其Sku属性设置为SqlSku的新实例,并相应设置CapacityFamilyTier属性
  • sqlDatabaseResource的数据库ID分配给SqlDatabasePatch.SourceDatabaseId
  • 在提供作为参数的UpdateUpdateAsyncsqlDatabaseResource上运行SqlDatabasePatch
  • 您可以决定是否只想触发数据库缩放(Azure.WaitUntil.Started)或等待它完成(Azure.WaitUntil.Completed)。

下面是代码:

代码语言:javascript
运行
复制
ArmClient client = new ArmClient(new DefaultAzureCredential());
SubscriptionResource subscription = await client.GetDefaultSubscriptionAsync();
ResourceGroupCollection resourceGroups = subscription.GetResourceGroups();
ResourceGroupResource resourceGroup = await resourceGroups.GetAsync("My_resourceGroup");
SqlServerResource sqlServerResource = await resourceGroup.GetSqlServerAsync("MySqlServerName");
SqlDatabaseResource sqlDatabaseResource = await sqlServerResource.GetSqlDatabaseAsync("MyDatabaseName");
SqlDatabasePatch patch = new SqlDatabasePatch();
SqlSku sku = new SqlSku("GP_Gen5");
sku.Capacity = 2;
sku.Family = "Gen5";
sku.Tier = "GeneralPurpose";
patch.Sku = sku;
patch.SourceDatabaseId = sqlDatabaseResource.Id;
var result = await sqlDatabaseResource.UpdateAsync(Azure.WaitUntil.Started, patch);

如何从ElasticPool中添加/删除数据库:

工作方式与上面相同,只需设置修补程序的ElasticPoolId属性,而不是Sku

代码语言:javascript
运行
复制
patch.ElasticPoolId = new ResourceIdentifier("/subscriptions/<subscriptionID>/resourceGroups/<resourcegropuname>/providers/Microsoft.Sql/servers/<servername>/elasticPools/<elasticpoolname>");
patch.SourceDatabaseId = sqlDatabaseResource.Id;
var result = await sqlDatabaseResource.UpdateAsync(Azure.WaitUntil.Started, patch);

不幸的是,result变量不包含任何成功信息。虽然我知道WaitUntil.Started不会返回最终结果,但是如果UpdateAsync返回初始检查的结果(如果有可能将数据库扩展到所请求的层),那就更好了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74066463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档