首页 > 解决方案 > SQL DB 超大规模 ServiceObjectiveName/Cores

问题描述

我正在使用 .net SDK 的 azure 库并遇到了一个问题。

如果 DatabaseEdition 是 Hyperscale,ServiceObjectiveName 有哪些可用选项?

当我创建一个超大规模数据库时,我相信 ServiceObjectiveName 默认是 Gen4。有没有办法指定 Gen5 和核心数量?

我找到了 ServiceObjectiveNames 列表,但它们似乎都与超大规模值无关。 https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.management.sql.models.serviceobjectivename?view=azure-dotnet

标签: azureazure-sql-databaseazure-sdk

解决方案


根据我的测试,如果我们使用Azure Management Libraries for .NET创建 Hyperscale Gen5 数据库,我们可以使用方法ServiceObjectiveName.Parse("")来指定 Gen5 和内核数量。

例如

如果我们使用ServiceObjectiveName.Parse("HS_Gen5_2"),则表示该数据库是 Hyperscale: Gen5, 2 vCores。

详细步骤如下:

  1. 创建服务主体并将角色分配给 sp
az ad sp create-for-rbac --name ServicePrincipalName --role contributor
  1. 代码:
var tenantId = "<your tenant id>";
            var clientId = "<your sp app id>";
            var clientSecret = <your sp password>;

            var SubscriptionId = "<your subscription id>";

            var credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal(
                                    clientId,
                                    clientSecret,
                                    tenantId,
                                    AzureEnvironment.AzureGlobalCloud);
            var azure = Microsoft.Azure.Management.Fluent.Azure.Configure()
                        .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                        .Authenticate(credentials)
                        .WithSubscription(SubscriptionId);

            var sqlServer = azure.SqlServers.GetByResourceGroup("test", "testsql07");
            Console.WriteLine(sqlServer.Name);

            var database = await sqlServer.Databases.Define("test1")
                                                   .WithEdition(DatabaseEdition.Hyperscale)
                                                   .WithServiceObjective(ServiceObjectiveName.Parse("HS_Gen5_2"))
                                                   .CreateAsync();
            Console.WriteLine(database.Edition.Value);
            Console.WriteLine(database.RequestedServiceObjectiveName.Value);

在此处输入图像描述 在此处输入图像描述


推荐阅读