快速入门:使用 .NET 中的 Azure (SDK) 库创建、更新和删除 Azure Database for PostgreSQL 实例

在本快速入门中,你将了解如何使用 .NET 中的 Azure SDK 库创建、更新和删除 Azure PostgreSQL 灵活服务器实例。 Azure Database for PostgreSQL 灵活服务器是一项托管服务,你可以用它在云中运行、管理和缩放高度可用的 PostgreSQL 数据库。 使用 .NET SDK,你可以在服务器上预配 Azure Database for PostgreSQL 灵活服务器实例、多个服务器或多个数据库。

先决条件

Azure.ResourceManager.PostgreSql 库

Azure.ResourceManager.PostgreSql 库是适用于 .NET 的 Azure SDK 的一部分,提供在 Azure 中管理 PostgreSQL 灵活服务器的功能。 使用此库,你可以执行与 PostgreSQL 灵活服务器相关的各种操作,包括但不限于:

  1. 创建 Azure PostgreSQL 灵活服务器
    可以使用指定配置(例如位置、SKU、存储和版本)创建新的灵活服务器实例。

  2. 更新 Azure PostgreSQL 灵活服务器
    可以更新现有的 PostgreSQL 灵活服务器,包括更改管理员登录名、密码、SKU、存储和版本之类的配置。

  3. 删除 Azure PostgreSQL 灵活服务器
    可以删除现有的 Azure PostgreSQL 灵活服务器实例。

  4. 检索 Azure PostgreSQL 灵活服务器信息
    可以检索有关现有的 PostgreSQL 灵活服务器的详细信息,包括其配置、状态和其他元数据。

  5. 管理数据库
    可以在 Azure PostgreSQL 灵活服务器实例中创建、更新、删除和检索数据库。

  6. 管理防火墙规则
    可以为实例创建、更新、删除和检索防火墙规则来控制访问。

  7. 管理配置设置
    可以管理 Azure PostgreSQL 灵活服务器实例的配置设置,包括检索和更新服务器参数。

登录 Azure

在使用适用于 .NET 的 Azure SDK 创建、更新或删除 Azure Database for PostgreSQL 灵活服务器实例之前,必须使用 Azure CLI 登录到 Azure 帐户。

运行登录命令

使用 az CLI 登录帐户

az login

安装所需程序包

使用以下命令来安装需要的包:

dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager
dotnet add package Azure.ResourceManager.PostgreSql

安装这些包后,请确保的每个 em 都列在 .csproj 文件中,然后再执行生成和运行命令。

若要了解有关 .csproj 文件的详细信息,请访问 Web 部署

备注

如果遇到与 .NET 的初始设置相关的问题,请按照本指南操作。

创建项目

按照此链接中所述的步骤创建新的 .NET 项目

创建服务器

若要创建 PostgreSQL 灵活服务器实例,请使用以下代码创建名为 CreateServer.cs 的文件。

using System;
using System.Threading.Tasks;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.PostgreSql.FlexibleServers;
using Azure.ResourceManager.PostgreSql.FlexibleServers.Models;

namespace CreatePostgreSqlFlexibleServer
{
    class Program
 {
        static async Task Main(string[] args)
   {

            TokenCredential credential = new DefaultAzureCredential();
            ArmClient armClient = new ArmClient(credential, new ArmClientOptions { Environment = ArmEnvironment.AzureChina });
            // Replace with your subscription ID
            string subscriptionId = "subscription-id";
            // Replace with your resource group name
            string resourceGroupName = "resource-group-name";
           // Replace with a unique server name
            string serverName = "server-name";
           // Replace with your desired region
            string location = "region-name";
          // Create the resource identifier for the resource group
            ResourceIdentifier resourceGroupId = ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
            ResourceGroupResource resourceGroup = await armClient.GetResourceGroupResource(resourceGroupId).GetAsync();
            // Prepare server data
            var serverData = new PostgreSqlFlexibleServerData(location)
            {
              AdministratorLogin = "admin-username",
              AdministratorLoginPassword = "admin-password",
              Version = "pgVersion",
              Storage = new PostgreSqlFlexibleServerStorage() { StorageSizeInGB = 128 },
              Sku = new PostgreSqlFlexibleServerSku("Standard_B1ms", PostgreSqlFlexibleServerSkuTier.Burstable),
           };
            try
            {
               ArmOperation<PostgreSqlFlexibleServerResource> operation = await resourceGroup.GetPostgreSqlFlexibleServers().CreateOrUpdateAsync(Azure.WaitUntil.Completed, serverName, serverData);
              PostgreSqlFlexibleServerResource serverResource = operation.Value;
              Console.WriteLine($"PostgreSQL Flexible Server '{serverResource.Data.Name}' created successfully.");
           }
            catch (Exception ex)
            {
               Console.WriteLine($"An error occurred: {ex.Message}");
            }
   }
  }
}

此示例演示如何使用 Azure Resource Manager 创建 PostgreSQL 灵活服务器。 PostgreSql 库。 同样,你可以使用库提供的其他方法来管理 PostgreSQL 灵活服务器和相关资源。

将代码中的以下参数替换为你的数据:

  • subscription-id:Azure 订阅 ID。
  • resource-group-name:资源组的名称。
  • server-name:PostgreSQL 服务器的唯一名称。
  • location:服务器的 Azure 区域。
  • admin-username:管理员用户名。
  • admin-password:管理员密码。
  • pgVersion:PostgreSQL 版本(例如 11、12、13、14、15 或 16)。

身份验证

DefaultAzureCredential 类尝试使用环境变量、托管标识或 Azure CLI 等方法进行身份验证。 确保已配置其中一种方法。

运行该文件

若要运行该文件,必须使用 .NET CLI 生成和执行 .cs 文件。 这会根据代码初始化 PostgreSQL 实例的创建、更新或删除过程。

每次在 .cs 文件中进行任何更改时,都不要忘记生成并运行该文件

使用以下命令运行 .cs 文件

dotnet build
dotnet run

备注

运行此代码将初始化实例创建过程,此过程可能需要几分钟才能完成。

查看已部署的资源

可以通过 Azure 门户、Azure CLI、Azure PowerShell 和其他各种工具查看已部署的灵活服务器实例,以验证部署并查看已部署的资源。

更新服务器数据

创建 UpdateServerData.cs 文件。

还可以使用 Azure PostgreSQL 灵活服务器 .NET SDK 更新服务器数据。

例如,可以使用该方法 CreateOrUpdateAsync 更新版本、管理员用户名、密码等。

如果没有具有相同名称的实例,则 CreateOrUpdateAsync 方法会创建一个新实例,或者在现有实例存在时使用新服务器数据更新现有实例。

using System;
using System.Threading.Tasks;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.PostgreSql.FlexibleServers;
using Azure.ResourceManager.PostgreSql.FlexibleServers.Models;

namespace UpdateServerData
{
    class Program
 {
        static async Task Main(string[] args)
   {

            TokenCredential credential = new DefaultAzureCredential();
            ArmClient armClient = new ArmClient(credential, new ArmClientOptions { Environment = ArmEnvironment.AzureChina });
            // Replace with your subscription ID
            string subscriptionId = "subscription-id";
            // Replace with your resource group name
            string resourceGroupName = "resource-group-name";
            // Replace with a unique server name
            string serverName = "server-name";
            // Replace with your desired region
            string location = "region-name";
            ResourceIdentifier resourceGroupId = ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
            ResourceGroupResource resourceGroup = await armClient.GetResourceGroupResource(resourceGroupId).GetAsync();
            // Prepare server data
            var serverData = new PostgreSqlFlexibleServerData(location)
           {
              // Updating version from a lower version to a higher version
              Version = "16", 
           };
            try
             {
               ArmOperation<PostgreSqlFlexibleServerResource> operation = await resourceGroup.GetPostgreSqlFlexibleServers().CreateOrUpdateAsync(Azure.WaitUntil.Completed, serverName, serverData);
               PostgreSqlFlexibleServerResource serverResource = operation.Value;
               Console.WriteLine($"PostgreSQL Flexible Server '{serverResource.Data.Name}' updated successfully.");
            }
            catch (Exception ex)
            {
              Console.WriteLine($"An error occurred: {ex.Message}");
            }
   }
  }
}

运行该文件,并使用“UpdateServerData.cs”文件查看资源中所做的更改。

清理资源

可以通过使用适用于 .NET 的 Azure SDK 删除灵活服务器实例来清理已创建的灵活服务器实例。

创建一个 DeleteServer.cs 文件,并添加以下代码。

using System;
using System.Threading.Tasks;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.PostgreSql.FlexibleServers;
using Azure.ResourceManager.PostgreSql.FlexibleServers.Models;

namespace DeleteServer
{
    class Program
  {
        static async Task Main(string[] args)
   {

            // Replace with your subscription ID
            string subscriptionId = "subscription-id";
            // Replace with your resource group name
            string resourceGroupName = "resource-group-name";
            // Replace with a unique server name
            string serverName = "server-name";
            var credential = new DefaultAzureCredential();
            var armClient = new ArmClient(credential, new ArmClientOptions { Environment = ArmEnvironment.AzureChina });
            try
            {
                // Get the PostgreSQL Flexible Server resource
                var postgresServerResourceId = PostgreSqlFlexibleServerResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, serverName);
                var postgresServer = armClient.GetPostgreSqlFlexibleServerResource(postgresServerResourceId);
                // Delete the server
                await postgresServer.DeleteAsync(Azure.WaitUntil.Completed);
                Console.WriteLine($"PostgreSQL Flexible Server '{serverName}' deleted successfully.");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"An error occurred: {ex.Message}");
            }
   }
  }
}

将以下参数替换为你的数据:

  • subscription-id:你自己的订阅 ID
  • resource-group-name:要使用的资源组的名称。 如果不存在,该脚本将创建新的资源组。
  • server-name:已创建的 Azure 数据库灵活服务器实例的名称。

还可以删除通过门户、CLI 或 PowerShell 创建的资源组。 如果要使用 CLI 或 PowerShell 将其删除,请按照 CLI 和 PowerShell 部分中提到的步骤操作。

将占位符替换为你的详细信息,然后运行该文件。

或者,可以使用以下各项移除资源组:

  • Azure CLI:az group delete --name <resource_group>
  • PowerShell:Remove-AzResourceGroup -Name <resource_group>
  • Azure 门户:导航到资源组并删除它。