SuperAPI AI 工具集

azure-resource-manager-sql-dotnet

部署与运维

查看项目

更新于 10-16 02:01

技能介绍

用途

Azure.ResourceManager.Sql(.NET)是 Azure SQL 的管理平面 SDK,用于通过 Azure Resource Manager 预配和管理 Azure SQL 资源。它负责创建服务器、数据库、弹性池,配置防火墙规则,管理故障转移组等管理操作。

需要注意管理平面与数据平面的区别:本 SDK(Azure.ResourceManager.Sql)用于创建服务器、数据库、弹性池,配置防火墙规则,管理故障转移组;数据平面 SDK(Microsoft.Data.SqlClient)用于执行查询、存储过程、管理连接。

安装

dotnet add package Azure.ResourceManager.Sql dotnet add package Azure.Identity

当前版本:稳定版 v1.3.0,预览版 v1.4.0-beta.3。

环境变量

AZURE_SUBSCRIPTION_ID=<your-subscription-id>

服务主体身份验证(可选)

AZURE_TENANT_ID=<tenant-id> AZURE_CLIENT_ID=<client-id> AZURE_CLIENT_SECRET=<client-secret>

身份验证

使用 Azure.Identity、Azure.ResourceManager、Azure.ResourceManager.Sql 命名空间。始终使用 DefaultAzureCredential 创建凭据,再创建 ArmClient,并通过订阅 ID 获取订阅资源。

资源层级

ArmClient → SubscriptionResource → ResourceGroupResource → SqlServerResource,其下包含 SqlDatabaseResource、ElasticPoolResource(下含 ElasticPoolDatabaseResource)、SqlFirewallRuleResource、FailoverGroupResource、ServerBlobAuditingPolicyResource、EncryptionProtectorResource、VirtualNetworkRuleResource。

核心工作流

  1. 创建 SQL Server:通过资源组获取服务器集合,使用 SqlServerData 定义位置、管理员登录名与密码、版本、最小 TLS 版本、公共网络访问标志,调用 CreateOrUpdateAsync 创建(长时间运行操作)。
  2. 创建 SQL 数据库:使用 SqlDatabaseData 定义 SKU、最大字节数、排序规则、备份存储冗余,通过服务器的 GetSqlDatabases 集合创建。
  3. 创建弹性池:使用 ElasticPoolData 定义 SKU(层级、容量)与每数据库设置(最小/最大容量),通过 GetElasticPools 集合创建。
  4. 将数据库加入弹性池:在 SqlDatabaseData 中设置 ElasticPoolId 后创建或更新数据库。
  5. 配置防火墙规则:使用 SqlFirewallRuleData 设置起始与结束 IP 地址,可允许 Azure 服务(0.0.0.0 到 0.0.0.0)或特定 IP 范围。
  6. 列出资源:可遍历订阅中的服务器、服务器中的数据库、弹性池。
  7. 获取连接字符串:服务器 FQDN 可预测为 {server.Data.Name}.database.windows.net,按示例拼接连接字符串。

关键类型

ArmClient 是所有 ARM 操作的入口;SqlServerResource/SqlServerCollection 表示服务器及其 CRUD 集合;SqlDatabaseResource/SqlDatabaseCollection 表示数据库及其 CRUD 集合;ElasticPoolResource/ElasticPoolCollection 表示弹性池及其 CRUD 集合;SqlFirewallRuleResource/SqlFirewallRuleCollection 表示防火墙规则及其 CRUD 集合;SqlServerData、SqlDatabaseData、ElasticPoolData、SqlFirewallRuleData 分别为创建/更新负载;SqlSku 用于 SKU 配置(层级、容量)。

常用 SKU

数据库 SKU:Basic(5 DTU,最大 2 GB)、S0-S12(Standard,10-3000 DTU)、P1-P15(Premium,125-4000 DTU)、GP_Gen5_2(GeneralPurpose,基于 vCore,2 vCore)、BC_Gen5_2(BusinessCritical,基于 vCore,2 vCore)、HS_Gen5_2(Hyperscale,基于 vCore,2 vCore)。

弹性池 SKU:BasicPool(50-1600 eDTU)、StandardPool(50-3000 eDTU)、PremiumPool(125-4000 eDTU)、GP_Gen5_2(GeneralPurpose,基于 vCore)、BC_Gen5_2(BusinessCritical,基于 vCore)。

最佳实践

对必须在继续前完成的操作使用 WaitUntil.Completed;需要手动轮询或并行运行时使用 WaitUntil.Started;始终使用 DefaultAzureCredential,切勿在生产环境硬编码密码;处理 RequestFailedException 以应对 ARM API 错误;使用 CreateOrUpdateAsync 实现幂等操作;通过 Get* 方法导航层级(如 server.GetSqlDatabases());管理多个数据库时使用弹性池优化成本;在尝试连接前配置防火墙规则。

错误处理

捕获 RequestFailedException,可按状态码分别处理,例如 409 表示服务器已存在,400 表示无效请求,其他情况输出状态、错误码与消息。

参考文件

references/server-management.md:服务器 CRUD、管理员凭据、Azure AD 身份验证、网络。references/database-operations.md:数据库 CRUD、缩放、备份、还原、复制。references/elastic-pools.md:池管理、添加/移除数据库、缩放。

相关 SDK

Microsoft.Data.SqlClient:数据平面(执行查询、存储过程),安装命令 dotnet add package Microsoft.Data.SqlClient。Azure.ResourceManager.Sql:管理平面(本 SDK),安装命令 dotnet add package Azure.ResourceManager.Sql。Microsoft.EntityFrameworkCore.SqlServer:SQL Server 的 ORM,安装命令 dotnet add package Microsoft.EntityFrameworkCore.SqlServer。

限制

仅当任务明确匹配上述范围时使用本技能。不要将输出视为环境特定验证、测试或专家审查的替代。如果缺少必需输入、权限、安全边界或成功标准,应停止并请求澄清。