[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FT76QMPR4GXR2PCC3HXFFY":3,"skill-same:01M6FT76QMPR4GXR2PCC3HXFFY":60},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":27,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":13,"repositoryHtmlUrl":41,"repositoryHomepageUrl":6,"ownerHtmlUrl":42,"ownerBlogUrl":43,"ownerDescription":44,"updatedAt":45,"install":46,"resources":59},"01M6FT76QMPR4GXR2PCC3HXFFY","azure-resource-manager-sql-dotnet",null,"reikiplanet\u002Fdaoskills","reikiplanet","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F96377599?v=4","01M6CVWCMD740YHQDK7E9QYBW4","Reiki Planet","01M6CVWCS4KXVA2CWFVJ43EAXK",0,"MIT","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fdata\u002Fazure-resource-manager-sql-dotnet\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[28,29,30,31,32],"dotnet","sql","azure","azure resource manager sql dotnet","azure resource manager","2026-11-10 10:12:30",false,"---\nname: azure-resource-manager-sql-dotnet\ndescription: \"|\"\n  Azure Resource Manager SDK for Azure SQL in .NET. Use for MANAGEMENT PLANE operations: creating\u002Fmanaging SQL servers, databases, elastic pools, firewall rules, and failover groups via Azure Resource Manager. NOT for data plane operations (executing queries) - use Microsoft.Data.SqlClient for that. Triggers: \"SQL server\", \"create SQL database\", \"manage SQL resources\", \"ARM SQL\", \"SqlServerResource\", \"provision Azure SQL\", \"elastic pool\", \"firewall rule\".\npackage: Azure.ResourceManager.Sql\nrisk: unknown\nsource: community\n---\n\n# Azure.ResourceManager.Sql (.NET)\n\nManagement plane SDK for provisioning and managing Azure SQL resources via Azure Resource Manager.\n\n> **⚠️ Management vs Data Plane**\n> - **This SDK (Azure.ResourceManager.Sql)**: Create servers, databases, elastic pools, configure firewall rules, manage failover groups\n> - **Data Plane SDK (Microsoft.Data.SqlClient)**: Execute queries, stored procedures, manage connections\n\n## Installation\n\n```bash\ndotnet add package Azure.ResourceManager.Sql\ndotnet add package Azure.Identity\n```\n\n**Current Versions**: Stable v1.3.0, Preview v1.4.0-beta.3\n\n## Environment Variables\n\n```bash\nAZURE_SUBSCRIPTION_ID=\u003Cyour-subscription-id>\n# For service principal auth (optional)\nAZURE_TENANT_ID=\u003Ctenant-id>\nAZURE_CLIENT_ID=\u003Cclient-id>\nAZURE_CLIENT_SECRET=\u003Cclient-secret>\n```\n\n## Authentication\n\n```csharp\nusing Azure.Identity;\nusing Azure.ResourceManager;\nusing Azure.ResourceManager.Sql;\n\n\u002F\u002F Always use DefaultAzureCredential\nvar credential = new DefaultAzureCredential();\nvar armClient = new ArmClient(credential);\n\n\u002F\u002F Get subscription\nvar subscriptionId = Environment.GetEnvironmentVariable(\"AZURE_SUBSCRIPTION_ID\");\nvar subscription = armClient.GetSubscriptionResource(\n    new ResourceIdentifier($\"\u002Fsubscriptions\u002F{subscriptionId}\"));\n```\n\n## Resource Hierarchy\n\n```\nArmClient\n└── SubscriptionResource\n    └── ResourceGroupResource\n        └── SqlServerResource\n            ├── SqlDatabaseResource\n            ├── ElasticPoolResource\n            │   └── ElasticPoolDatabaseResource\n            ├── SqlFirewallRuleResource\n            ├── FailoverGroupResource\n            ├── ServerBlobAuditingPolicyResource\n            ├── EncryptionProtectorResource\n            └── VirtualNetworkRuleResource\n```\n\n## Core Workflow\n\n### 1. Create SQL Server\n\n```csharp\nusing Azure.ResourceManager.Sql;\nusing Azure.ResourceManager.Sql.Models;\n\n\u002F\u002F Get resource group\nvar resourceGroup = await subscription\n    .GetResourceGroupAsync(\"my-resource-group\");\n\n\u002F\u002F Define server\nvar serverData = new SqlServerData(AzureLocation.EastUS)\n{\n    AdministratorLogin = \"sqladmin\",\n    AdministratorLoginPassword = \"YourSecurePassword123!\",\n    Version = \"12.0\",\n    MinimalTlsVersion = SqlMinimalTlsVersion.Tls1_2,\n    PublicNetworkAccess = ServerNetworkAccessFlag.Enabled\n};\n\n\u002F\u002F Create server (long-running operation)\nvar serverCollection = resourceGroup.Value.GetSqlServers();\nvar operation = await serverCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"my-sql-server\",\n    serverData);\n\nSqlServerResource server = operation.Value;\n```\n\n### 2. Create SQL Database\n\n```csharp\nvar databaseData = new SqlDatabaseData(AzureLocation.EastUS)\n{\n    Sku = new SqlSku(\"S0\") { Tier = \"Standard\" },\n    MaxSizeBytes = 2L * 1024 * 1024 * 1024, \u002F\u002F 2 GB\n    Collation = \"SQL_Latin1_General_CP1_CI_AS\",\n    RequestedBackupStorageRedundancy = SqlBackupStorageRedundancy.Local\n};\n\nvar databaseCollection = server.GetSqlDatabases();\nvar dbOperation = await databaseCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"my-database\",\n    databaseData);\n\nSqlDatabaseResource database = dbOperation.Value;\n```\n\n### 3. Create Elastic Pool\n\n```csharp\nvar poolData = new ElasticPoolData(AzureLocation.EastUS)\n{\n    Sku = new SqlSku(\"StandardPool\")\n    {\n        Tier = \"Standard\",\n        Capacity = 100 \u002F\u002F 100 eDTUs\n    },\n    PerDatabaseSettings = new ElasticPoolPerDatabaseSettings\n    {\n        MinCapacity = 0,\n        MaxCapacity = 100\n    }\n};\n\nvar poolCollection = server.GetElasticPools();\nvar poolOperation = await poolCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"my-elastic-pool\",\n    poolData);\n\nElasticPoolResource pool = poolOperation.Value;\n```\n\n### 4. Add Database to Elastic Pool\n\n```csharp\nvar databaseData = new SqlDatabaseData(AzureLocation.EastUS)\n{\n    ElasticPoolId = pool.Id\n};\n\nawait databaseCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"pooled-database\",\n    databaseData);\n```\n\n### 5. Configure Firewall Rules\n\n```csharp\n\u002F\u002F Allow Azure services\nvar azureServicesRule = new SqlFirewallRuleData\n{\n    StartIPAddress = \"0.0.0.0\",\n    EndIPAddress = \"0.0.0.0\"\n};\n\nvar firewallCollection = server.GetSqlFirewallRules();\nawait firewallCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"AllowAzureServices\",\n    azureServicesRule);\n\n\u002F\u002F Allow specific IP range\nvar clientRule = new SqlFirewallRuleData\n{\n    StartIPAddress = \"203.0.113.0\",\n    EndIPAddress = \"203.0.113.255\"\n};\n\nawait firewallCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"AllowClientIPs\",\n    clientRule);\n```\n\n### 6. List Resources\n\n```csharp\n\u002F\u002F List all servers in subscription\nawait foreach (var srv in subscription.GetSqlServersAsync())\n{\n    Console.WriteLine($\"Server: {srv.Data.Name} in {srv.Data.Location}\");\n}\n\n\u002F\u002F List databases in a server\nawait foreach (var db in server.GetSqlDatabases())\n{\n    Console.WriteLine($\"Database: {db.Data.Name}, SKU: {db.Data.Sku?.Name}\");\n}\n\n\u002F\u002F List elastic pools\nawait foreach (var ep in server.GetElasticPools())\n{\n    Console.WriteLine($\"Pool: {ep.Data.Name}, DTU: {ep.Data.Sku?.Capacity}\");\n}\n```\n\n### 7. Get Connection String\n\n```csharp\n\u002F\u002F Build connection string (server FQDN is predictable)\nvar serverFqdn = $\"{server.Data.Name}.database.windows.net\";\nvar connectionString = $\"Server=tcp:{serverFqdn},1433;\" +\n    $\"Initial Catalog={database.Data.Name};\" +\n    \"Persist Security Info=False;\" +\n    $\"User ID={server.Data.AdministratorLogin};\" +\n    \"Password=\u003Cyour-password>;\" +\n    \"MultipleActiveResultSets=False;\" +\n    \"Encrypt=True;\" +\n    \"TrustServerCertificate=False;\" +\n    \"Connection Timeout=30;\";\n```\n\n## Key Types Reference\n\n| Type | Purpose |\n|------|---------|\n| `ArmClient` | Entry point for all ARM operations |\n| `SqlServerResource` | Represents an Azure SQL server |\n| `SqlServerCollection` | Collection for server CRUD |\n| `SqlDatabaseResource` | Represents a SQL database |\n| `SqlDatabaseCollection` | Collection for database CRUD |\n| `ElasticPoolResource` | Represents an elastic pool |\n| `ElasticPoolCollection` | Collection for elastic pool CRUD |\n| `SqlFirewallRuleResource` | Represents a firewall rule |\n| `SqlFirewallRuleCollection` | Collection for firewall rule CRUD |\n| `SqlServerData` | Server creation\u002Fupdate payload |\n| `SqlDatabaseData` | Database creation\u002Fupdate payload |\n| `ElasticPoolData` | Elastic pool creation\u002Fupdate payload |\n| `SqlFirewallRuleData` | Firewall rule creation\u002Fupdate payload |\n| `SqlSku` | SKU configuration (tier, capacity) |\n\n## Common SKUs\n\n### Database SKUs\n\n| SKU Name | Tier | Description |\n|----------|------|-------------|\n| `Basic` | Basic | 5 DTUs, 2 GB max |\n| `S0`-`S12` | Standard | 10-3000 DTUs |\n| `P1`-`P15` | Premium | 125-4000 DTUs |\n| `GP_Gen5_2` | GeneralPurpose | vCore-based, 2 vCores |\n| `BC_Gen5_2` | BusinessCritical | vCore-based, 2 vCores |\n| `HS_Gen5_2` | Hyperscale | vCore-based, 2 vCores |\n\n### Elastic Pool SKUs\n\n| SKU Name | Tier | Description |\n|----------|------|-------------|\n| `BasicPool` | Basic | 50-1600 eDTUs |\n| `StandardPool` | Standard | 50-3000 eDTUs |\n| `PremiumPool` | Premium | 125-4000 eDTUs |\n| `GP_Gen5_2` | GeneralPurpose | vCore-based |\n| `BC_Gen5_2` | BusinessCritical | vCore-based |\n\n## Best Practices\n\n1. **Use `WaitUntil.Completed`** for operations that must finish before proceeding\n2. **Use `WaitUntil.Started`** when you want to poll manually or run operations in parallel\n3. **Always use `DefaultAzureCredential`** — never hardcode passwords in production\n4. **Handle `RequestFailedException`** for ARM API errors\n5. **Use `CreateOrUpdateAsync`** for idempotent operations\n6. **Navigate hierarchy** via `Get*` methods (e.g., `server.GetSqlDatabases()`)\n7. **Use elastic pools** for cost optimization when managing multiple databases\n8. **Configure firewall rules** before attempting connections\n\n## Error Handling\n\n```csharp\nusing Azure;\n\ntry\n{\n    var operation = await serverCollection.CreateOrUpdateAsync(\n        WaitUntil.Completed, serverName, serverData);\n}\ncatch (RequestFailedException ex) when (ex.Status == 409)\n{\n    Console.WriteLine(\"Server already exists\");\n}\ncatch (RequestFailedException ex) when (ex.Status == 400)\n{\n    Console.WriteLine($\"Invalid request: {ex.Message}\");\n}\ncatch (RequestFailedException ex)\n{\n    Console.WriteLine($\"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}\");\n}\n```\n\n## Reference Files\n\n| File | When to Read |\n|------|--------------|\n| references\u002Fserver-management.md | Server CRUD, admin credentials, Azure AD auth, networking |\n| references\u002Fdatabase-operations.md | Database CRUD, scaling, backup, restore, copy |\n| references\u002Felastic-pools.md | Pool management, adding\u002Fremoving databases, scaling |\n\n## Related SDKs\n\n| SDK | Purpose | Install |\n|-----|---------|---------|\n| `Microsoft.Data.SqlClient` | Data plane (execute queries, stored procedures) | `dotnet add package Microsoft.Data.SqlClient` |\n| `Azure.ResourceManager.Sql` | Management plane (this SDK) | `dotnet add package Azure.ResourceManager.Sql` |\n| `Microsoft.EntityFrameworkCore.SqlServer` | ORM for SQL Server | `dotnet add package Microsoft.EntityFrameworkCore.SqlServer` |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n","# Azure.ResourceManager.Sql (.NET)\n\nManagement plane SDK for provisioning and managing Azure SQL resources via Azure Resource Manager.\n\n> **⚠️ Management vs Data Plane**\n> - **This SDK (Azure.ResourceManager.Sql)**: Create servers, databases, elastic pools, configure firewall rules, manage failover groups\n> - **Data Plane SDK (Microsoft.Data.SqlClient)**: Execute queries, stored procedures, manage connections\n\n## Installation\n\n```bash\ndotnet add package Azure.ResourceManager.Sql\ndotnet add package Azure.Identity\n```\n\n**Current Versions**: Stable v1.3.0, Preview v1.4.0-beta.3\n\n## Environment Variables\n\n```bash\nAZURE_SUBSCRIPTION_ID=\u003Cyour-subscription-id>\n# For service principal auth (optional)\nAZURE_TENANT_ID=\u003Ctenant-id>\nAZURE_CLIENT_ID=\u003Cclient-id>\nAZURE_CLIENT_SECRET=\u003Cclient-secret>\n```\n\n## Authentication\n\n```csharp\nusing Azure.Identity;\nusing Azure.ResourceManager;\nusing Azure.ResourceManager.Sql;\n\n\u002F\u002F Always use DefaultAzureCredential\nvar credential = new DefaultAzureCredential();\nvar armClient = new ArmClient(credential);\n\n\u002F\u002F Get subscription\nvar subscriptionId = Environment.GetEnvironmentVariable(\"AZURE_SUBSCRIPTION_ID\");\nvar subscription = armClient.GetSubscriptionResource(\n    new ResourceIdentifier($\"\u002Fsubscriptions\u002F{subscriptionId}\"));\n```\n\n## Resource Hierarchy\n\n```\nArmClient\n└── SubscriptionResource\n    └── ResourceGroupResource\n        └── SqlServerResource\n            ├── SqlDatabaseResource\n            ├── ElasticPoolResource\n            │   └── ElasticPoolDatabaseResource\n            ├── SqlFirewallRuleResource\n            ├── FailoverGroupResource\n            ├── ServerBlobAuditingPolicyResource\n            ├── EncryptionProtectorResource\n            └── VirtualNetworkRuleResource\n```\n\n## Core Workflow\n\n### 1. Create SQL Server\n\n```csharp\nusing Azure.ResourceManager.Sql;\nusing Azure.ResourceManager.Sql.Models;\n\n\u002F\u002F Get resource group\nvar resourceGroup = await subscription\n    .GetResourceGroupAsync(\"my-resource-group\");\n\n\u002F\u002F Define server\nvar serverData = new SqlServerData(AzureLocation.EastUS)\n{\n    AdministratorLogin = \"sqladmin\",\n    AdministratorLoginPassword = \"YourSecurePassword123!\",\n    Version = \"12.0\",\n    MinimalTlsVersion = SqlMinimalTlsVersion.Tls1_2,\n    PublicNetworkAccess = ServerNetworkAccessFlag.Enabled\n};\n\n\u002F\u002F Create server (long-running operation)\nvar serverCollection = resourceGroup.Value.GetSqlServers();\nvar operation = await serverCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"my-sql-server\",\n    serverData);\n\nSqlServerResource server = operation.Value;\n```\n\n### 2. Create SQL Database\n\n```csharp\nvar databaseData = new SqlDatabaseData(AzureLocation.EastUS)\n{\n    Sku = new SqlSku(\"S0\") { Tier = \"Standard\" },\n    MaxSizeBytes = 2L * 1024 * 1024 * 1024, \u002F\u002F 2 GB\n    Collation = \"SQL_Latin1_General_CP1_CI_AS\",\n    RequestedBackupStorageRedundancy = SqlBackupStorageRedundancy.Local\n};\n\nvar databaseCollection = server.GetSqlDatabases();\nvar dbOperation = await databaseCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"my-database\",\n    databaseData);\n\nSqlDatabaseResource database = dbOperation.Value;\n```\n\n### 3. Create Elastic Pool\n\n```csharp\nvar poolData = new ElasticPoolData(AzureLocation.EastUS)\n{\n    Sku = new SqlSku(\"StandardPool\")\n    {\n        Tier = \"Standard\",\n        Capacity = 100 \u002F\u002F 100 eDTUs\n    },\n    PerDatabaseSettings = new ElasticPoolPerDatabaseSettings\n    {\n        MinCapacity = 0,\n        MaxCapacity = 100\n    }\n};\n\nvar poolCollection = server.GetElasticPools();\nvar poolOperation = await poolCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"my-elastic-pool\",\n    poolData);\n\nElasticPoolResource pool = poolOperation.Value;\n```\n\n### 4. Add Database to Elastic Pool\n\n```csharp\nvar databaseData = new SqlDatabaseData(AzureLocation.EastUS)\n{\n    ElasticPoolId = pool.Id\n};\n\nawait databaseCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"pooled-database\",\n    databaseData);\n```\n\n### 5. Configure Firewall Rules\n\n```csharp\n\u002F\u002F Allow Azure services\nvar azureServicesRule = new SqlFirewallRuleData\n{\n    StartIPAddress = \"0.0.0.0\",\n    EndIPAddress = \"0.0.0.0\"\n};\n\nvar firewallCollection = server.GetSqlFirewallRules();\nawait firewallCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"AllowAzureServices\",\n    azureServicesRule);\n\n\u002F\u002F Allow specific IP range\nvar clientRule = new SqlFirewallRuleData\n{\n    StartIPAddress = \"203.0.113.0\",\n    EndIPAddress = \"203.0.113.255\"\n};\n\nawait firewallCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"AllowClientIPs\",\n    clientRule);\n```\n\n### 6. List Resources\n\n```csharp\n\u002F\u002F List all servers in subscription\nawait foreach (var srv in subscription.GetSqlServersAsync())\n{\n    Console.WriteLine($\"Server: {srv.Data.Name} in {srv.Data.Location}\");\n}\n\n\u002F\u002F List databases in a server\nawait foreach (var db in server.GetSqlDatabases())\n{\n    Console.WriteLine($\"Database: {db.Data.Name}, SKU: {db.Data.Sku?.Name}\");\n}\n\n\u002F\u002F List elastic pools\nawait foreach (var ep in server.GetElasticPools())\n{\n    Console.WriteLine($\"Pool: {ep.Data.Name}, DTU: {ep.Data.Sku?.Capacity}\");\n}\n```\n\n### 7. Get Connection String\n\n```csharp\n\u002F\u002F Build connection string (server FQDN is predictable)\nvar serverFqdn = $\"{server.Data.Name}.database.windows.net\";\nvar connectionString = $\"Server=tcp:{serverFqdn},1433;\" +\n    $\"Initial Catalog={database.Data.Name};\" +\n    \"Persist Security Info=False;\" +\n    $\"User ID={server.Data.AdministratorLogin};\" +\n    \"Password=\u003Cyour-password>;\" +\n    \"MultipleActiveResultSets=False;\" +\n    \"Encrypt=True;\" +\n    \"TrustServerCertificate=False;\" +\n    \"Connection Timeout=30;\";\n```\n\n## Key Types Reference\n\n| Type | Purpose |\n|------|---------|\n| `ArmClient` | Entry point for all ARM operations |\n| `SqlServerResource` | Represents an Azure SQL server |\n| `SqlServerCollection` | Collection for server CRUD |\n| `SqlDatabaseResource` | Represents a SQL database |\n| `SqlDatabaseCollection` | Collection for database CRUD |\n| `ElasticPoolResource` | Represents an elastic pool |\n| `ElasticPoolCollection` | Collection for elastic pool CRUD |\n| `SqlFirewallRuleResource` | Represents a firewall rule |\n| `SqlFirewallRuleCollection` | Collection for firewall rule CRUD |\n| `SqlServerData` | Server creation\u002Fupdate payload |\n| `SqlDatabaseData` | Database creation\u002Fupdate payload |\n| `ElasticPoolData` | Elastic pool creation\u002Fupdate payload |\n| `SqlFirewallRuleData` | Firewall rule creation\u002Fupdate payload |\n| `SqlSku` | SKU configuration (tier, capacity) |\n\n## Common SKUs\n\n### Database SKUs\n\n| SKU Name | Tier | Description |\n|----------|------|-------------|\n| `Basic` | Basic | 5 DTUs, 2 GB max |\n| `S0`-`S12` | Standard | 10-3000 DTUs |\n| `P1`-`P15` | Premium | 125-4000 DTUs |\n| `GP_Gen5_2` | GeneralPurpose | vCore-based, 2 vCores |\n| `BC_Gen5_2` | BusinessCritical | vCore-based, 2 vCores |\n| `HS_Gen5_2` | Hyperscale | vCore-based, 2 vCores |\n\n### Elastic Pool SKUs\n\n| SKU Name | Tier | Description |\n|----------|------|-------------|\n| `BasicPool` | Basic | 50-1600 eDTUs |\n| `StandardPool` | Standard | 50-3000 eDTUs |\n| `PremiumPool` | Premium | 125-4000 eDTUs |\n| `GP_Gen5_2` | GeneralPurpose | vCore-based |\n| `BC_Gen5_2` | BusinessCritical | vCore-based |\n\n## Best Practices\n\n1. **Use `WaitUntil.Completed`** for operations that must finish before proceeding\n2. **Use `WaitUntil.Started`** when you want to poll manually or run operations in parallel\n3. **Always use `DefaultAzureCredential`** — never hardcode passwords in production\n4. **Handle `RequestFailedException`** for ARM API errors\n5. **Use `CreateOrUpdateAsync`** for idempotent operations\n6. **Navigate hierarchy** via `Get*` methods (e.g., `server.GetSqlDatabases()`)\n7. **Use elastic pools** for cost optimization when managing multiple databases\n8. **Configure firewall rules** before attempting connections\n\n## Error Handling\n\n```csharp\nusing Azure;\n\ntry\n{\n    var operation = await serverCollection.CreateOrUpdateAsync(\n        WaitUntil.Completed, serverName, serverData);\n}\ncatch (RequestFailedException ex) when (ex.Status == 409)\n{\n    Console.WriteLine(\"Server already exists\");\n}\ncatch (RequestFailedException ex) when (ex.Status == 400)\n{\n    Console.WriteLine($\"Invalid request: {ex.Message}\");\n}\ncatch (RequestFailedException ex)\n{\n    Console.WriteLine($\"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}\");\n}\n```\n\n## Reference Files\n\n| File | When to Read |\n|------|--------------|\n| references\u002Fserver-management.md | Server CRUD, admin credentials, Azure AD auth, networking |\n| references\u002Fdatabase-operations.md | Database CRUD, scaling, backup, restore, copy |\n| references\u002Felastic-pools.md | Pool management, adding\u002Fremoving databases, scaling |\n\n## Related SDKs\n\n| SDK | Purpose | Install |\n|-----|---------|---------|\n| `Microsoft.Data.SqlClient` | Data plane (execute queries, stored procedures) | `dotnet add package Microsoft.Data.SqlClient` |\n| `Azure.ResourceManager.Sql` | Management plane (this SDK) | `dotnet add package Azure.ResourceManager.Sql` |\n| `Microsoft.EntityFrameworkCore.SqlServer` | ORM for SQL Server | `dotnet add package Microsoft.EntityFrameworkCore.SqlServer` |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n",{},"master","dff58085da947e81e8418c922055644bf0082b1b","data\u002Fazure-resource-manager-sql-dotnet","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills","https:\u002F\u002Fgithub.com\u002Freikiplanet","https:\u002F\u002Fwww.reiki-planet.com","Reiki Planet Game","2026-03-29 06:02:29",{"source":7,"skillName":5,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add reikiplanet\u002Fdaoskills --skill azure-resource-manager-sql-dotnet",{"tool":52,"command":53},"bunx","bunx skills add reikiplanet\u002Fdaoskills --skill azure-resource-manager-sql-dotnet",{"tool":55,"command":56},"pnpm","pnpm dlx skills add reikiplanet\u002Fdaoskills --skill azure-resource-manager-sql-dotnet","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fdata\u002Fazure-resource-manager-sql-dotnet\u002FSKILL.md",true,[],[61,88,100,115,135,158],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":33},"01M6G614JTEQJHPT8AKK3YQ18S","web-games","Web browser game development principles. Framework selection, WebGPU, optimization, PWA.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fweb-games\u002FSKILL.md",[],[68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87],"games","web games","web","grep","principles","selection","community","framework selection","edit","write","read","pwa","game","web browser","game development","Optimization","framework","browser","development","webgpu",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":33},"01M6G611H2YGV0GZFP90D38ZMJ","vr-ar","VR\u002FAR development principles. Comfort, interaction, performance requirements.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fvr-ar\u002FSKILL.md",[],[95,96,86,97,98,74,76,77,78,71,99,72],"ar","vr ar","interaction","requirements","performance",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":33},"01M6G60XNMHAMV1SV0EJ1CX0AY","templates","Project scaffolding templates for new applications. Use when creating new projects from scratch. Contains 12 templates for various tech stacks.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Ftemplates\u002FSKILL.md",[],[102,107,108,109,110,111,74,112,78,113,114,71],"project scaffolding","From Scratch","tech","project","scaffolding","use","projects","applications",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":33},"01M6G60T0GATMK3Q5H8GDC1Z8S","wcag-audit-patterns","Conduct WCAG 2.2 accessibility audits with automated testing, manual verification, and remediation guidance. Use when auditing websites for accessibility, fixing WCAG violations, or implementing ac...","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fsecurity\u002Fwcag-audit-patterns\u002FSKILL.md",[],[122,123,124,125,126,74,127,128,129,130,112,131,132,133,134],"wcag audit patterns","wcag audit","patterns","WCAG","audit","manual","with","automated testing","guidance","remediation","verification","accessibility","testing",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":33},"01M6G60PMCHW1FRZ63F931QK3R","vulnerability-scanner","Advanced vulnerability analysis principles. OWASP 2025, Supply Chain Security, attack surface mapping, risk prioritization.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fsecurity\u002Fvulnerability-scanner\u002FSKILL.md",[],[142,143,144,145,146,147,148,149,74,78,71,150,72,151,152,153,154,155,156,157],"scanner","vulnerability scanner","vulnerability","prioritization","2025","mapping","chain","supply chain","Bash","analysis","risk","owasp","supply chain security","security","supply","advanced",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":164,"publishedAt":33},"01M6G60JZBB8DK0W3DSG1WNMZK","threat-modeling-expert","Expert in threat modeling methodologies, security architecture review, and risk assessment. Masters STRIDE, PASTA, attack trees, and security requirement extraction. Use for security architecture r...","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fsecurity\u002Fthreat-modeling-expert\u002FSKILL.md",[],[165,166,167,168,169,170,171,172,155,112,173,174,175,74,176,177,178,152,179,180],"modeling","threat modeling expert","threat modeling","expert","threat","risk assessment","architecture review","architecture","security architecture review","trees","security architecture","security requirement extraction","assessment","extraction","review","stride"]