我刚刚开始使用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来扩展数据库呢?
发布于 2022-11-02 08:15:35
好吧,我终于弄明白了它是怎么工作的。MS支持建议设置SqlDatabasePatch的SqlDatabasePatch属性并在SqlDatabaseResource上调用Update方法。不幸的是,这不能工作,因为该属性是只读的。
但是,我试过了,就像下面描述的那样,它对我很有用。由于缺乏任何文档和MS支持并不特别有用,我无法判断这是否是“正式”或推荐的方法,或者它是否会在SDK的未来版本中继续工作,所以我仍然愿意获得更好的建议或确认。
因此,您需要做的是遍历Azure的层次结构来访问数据库:
ArmClientSubscriptionResourceResourceGroupResourceSqlServerResourceSqlDatabasePatch的新实例,并将其Sku属性设置为SqlSku的新实例,并相应设置Capacity、Family和Tier属性sqlDatabaseResource的数据库ID分配给SqlDatabasePatch.SourceDatabaseIdUpdate或UpdateAsync的sqlDatabaseResource上运行SqlDatabasePatch。Azure.WaitUntil.Started)或等待它完成(Azure.WaitUntil.Completed)。下面是代码:
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
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返回初始检查的结果(如果有可能将数据库扩展到所请求的层),那就更好了。
https://stackoverflow.com/questions/74066463
复制相似问题