使用 SDK 创建具有无服务器层的 Sql Azure 数据库

Create a Sql Azure Database with serverless tier using SDK

目前,我创建数据库并将它们附加到 SQL 弹性池:

database = await sqlServer.Databases.Define(mainDb.DbName).WithExistingElasticPool(pool.Name).CreateAsync();

相反,我想创建层 "General Purpose: Serverless, Gen5, 1 vCore" 的数据库,但我找不到任何提供这种可能性的方法。

此功能仍处于预览阶段,我在论坛上找不到任何关于此的内容。我怎样才能做到这一点?

根据我的测试,我们可以使用下面的c#代码创建"General Purpose: Serverless, Gen5, 1 vCore"数据库

var credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal(client,key,tenant,AzureEnvironment.AzureGlobalCloud);
var azure = Azure.Configure().Authenticate(credentials).WithSubscription(SubscriptionId);
var sqlserver=azure.SqlServers.GetById("/subscriptions/<your subscrption id>/resourceGroups/<your resource group name>/providers/Microsoft.Sql/servers/<your server name>");
var database = sqlserver.Databases.Define("test").WithEdition("GeneralPurpose").WithServiceObjective("GP_S_Gen5_1").Create();
Console.WriteLine(database.ServiceLevelObjective);
Console.WriteLine(database.Edition);
Console.WriteLine(database.Name);
Console.ReadLine();

请参考本教程:Create a new elastic database pool with C#

提供了关于Create a new database in a pool的代码示例:

创建一个DataBaseCreateorUpdateProperties实例,并设置新数据库的属性。然后使用资源组、服务器名称和新数据库名称调用 CreateOrUpdate 方法。

// Create a database: configure create or update parameters and properties explicitly
DatabaseCreateOrUpdateParameters newPooledDatabaseParameters = new DatabaseCreateOrUpdateParameters()
{
    Location = currentServer.Location,
    Properties = new DatabaseCreateOrUpdateProperties()
    {
        Edition = "Standard",
        RequestedServiceObjectiveName = "ElasticPool",
        ElasticPoolName = "ElasticPool1",
        MaxSizeBytes = 268435456000, // 250 GB,
        Collation = "SQL_Latin1_General_CP1_CI_AS"
    }
};

var poolDbResponse = sqlClient.Databases.CreateOrUpdate("resourcegroup-name", "server-name", "Database2", newPooledDatabaseParameters);

请尝试将“standard”替换为价格等级“General Purpose: Serverless, Gen5, 1 vCore”。

希望对您有所帮助。

作为对@Jim Xu 已接受答案的补充,API 已更改。

var database = sqlserver.Databases.Define("test").WithEdition("GeneralPurpose").WithServiceObjective("GP_S_Gen5_1").Create();

WithEdition 现在是 DatabaseEdition 版本类型,WithServiceObjective 现在是 ServiceObjectiveName。这两个都是带有版本类型列表的混乱字符串枚举。他们都接受 .Parse() 方法。所以现在该行应该是:

var database = sqlserver.Databases.Define("test")
             .WithEdition(**Database.Edition.Parse("GeneralPurpose")**)
             .WithServiceObjective(**ServiceObjectiveName.Parse("GP_S_Gen5_1")**)
             .Create();