Skip to content

使用 .NET SDK 自动化管理 Azure SQL 资源

解决云基础设施手动配置效率低的问题:通过 .NET 管理平面 SDK 实现 Azure SQL 资源(服务器、数据库、防火墙规则等)的自动化部署与生命周期管理。

为什么需要这个技能

在开发企业级应用时,手动通过 Azure Portal 创建数据库不仅耗时,且难以在不同环境(开发、测试、生产)之间保持一致。

必须明确的是,Azure SQL 的操作分为管理平面(Management Plane)数据平面(Data Plane)。本技能聚焦于管理平面,即使用 Azure.ResourceManager.Sql 来执行“建库、扩容、配置防火墙”等运维操作,而不是执行 SELECTINSERT 等 SQL 查询(后者应使用 Microsoft.Data.SqlClient)。

适用场景

  • 自动化环境构建:在 CI/CD 流水线中自动创建测试数据库。
  • 动态资源缩放:根据业务负载通过代码调整数据库 SKU 或弹性池容量。
  • 安全策略自动化:根据 IP 白名单动态更新 SQL 防火墙规则。
  • 多租户部署:为每个新客户自动创建独立的 SQL 数据库并分配至弹性池。

核心工作流

1. 环境准备与认证

安装必要包并使用 DefaultAzureCredential 进行身份验证,避免在代码中硬编码密钥。

bash
dotnet add package Azure.ResourceManager.Sql
dotnet add package Azure.Identity
csharp
using Azure.Identity;
using Azure.ResourceManager;

var credential = new DefaultAzureCredential();
var armClient = new ArmClient(credential);
var subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID");
var subscription = armClient.GetSubscriptionResource(new ResourceIdentifier($"/subscriptions/{subscriptionId}"));

2. 资源编排步骤

按照 资源组 SQL 服务器 数据库/弹性池 防火墙规则 的层级关系进行操作。

  • 创建服务器:定义 SqlServerData,配置管理员账号和 TLS 版本。
  • 创建数据库:通过 SqlDatabaseData 指定 SKU(如 Basic, Standard, Premium)和存储大小。
  • 配置弹性池:使用 ElasticPoolData 优化成本,将多个数据库聚合在统一资源池中。
  • 设置防火墙:通过 SqlFirewallRuleData 开放特定 IP 或允许 Azure 内部服务访问。

3. 关键操作示例:创建数据库

csharp
var databaseData = new SqlDatabaseData(AzureLocation.EastUS)
{
    Sku = new SqlSku("S0") { Tier = "Standard" },
    MaxSizeBytes = 2L * 1024 * 1024 * 1024, // 2 GB
};

var databaseCollection = server.GetSqlDatabases();
var dbOperation = await databaseCollection.CreateOrUpdateAsync(
    WaitUntil.Completed,
    "my-database",
    databaseData);

下载和安装

下载 azure-resource-manager-sql-dotnet 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐