
【免费下载链接】context-hub项目地址https://gitcode.com/gh_mirrors/co/context-hub点击查看免费下载本篇技术指南基于 Context Hub 仓库中维护的 Azure SQL 管理 SDKPython文档系统讲解如何使用azure-mgmt-sql完成 Azure Resource Manager 控制面control-plane操作创建与更新逻辑服务器logical server、数据库、防火墙规则、故障转移组等资源。读完本篇你将掌握该 SDK 的安装与版本固定方式、DefaultAzureCredential认证流程、SqlManagementClient的客户端构建与操作组调用模式以及长时操作begin_*的等待方式并能避开管理面与数据面混用、忘记.result()、RBAC 权限缺失等高频坑。一、Golden Rule控制面与数据面的边界azure-mgmt-sql是 Azure SQL 的管理面ARM control-planeSDK用于创建逻辑服务器、数据库、防火墙规则、故障转移组等 Azure SQL 资源。它的边界非常清晰不要用它打开 SQL 连接或对数据库执行查询——那是数据面data-plane工作应使用pyodbc或基于 SQL Server 驱动之上的 SQLAlchemy 完成。标准调用模式是四步使用azure-identity完成认证构造SqlManagementClient调用操作组operation group如servers、databases、firewall_rules对任何begin_*长时操作调用.result()等待完成。这套“管理面负责供给、数据面负责查询”的边界同样体现在同仓库维护的其他文档中JavaScript 版的 arm-sql 文档 与 SQL 虚拟机管理 SDK 的 mgmt-sqlvirtualmachine 文档 均明确强调管理包不执行 SQL 语句、不建立 TDS 连接。二、安装与版本固定管理包应固定版本并同时安装azure-identity以支持 Microsoft Entra IDAzure AD认证python -m pip install azure-mgmt-sql3.0.1 azure-identity常用替代安装方式uv add azure-mgmt-sql3.0.1 azure-identity poetry add azure-mgmt-sql3.0.1 azure-identity如果在 CI 中使用服务主体service principal认证通常还需要设置以下环境变量export AZURE_SUBSCRIPTION_IDsubscription-id export AZURE_TENANT_IDtenant-id export AZURE_CLIENT_IDclient-id export AZURE_CLIENT_SECRETclient-secret本地开发时Microsoft 建议先用 Azure 开发者工具登录再由DefaultAzureCredential复用登录态az login三、认证与客户端构建SqlManagementClient是一个 Azure 管理面客户端需要三样东西一个 Azure 凭据通常是DefaultAzureCredential()一个订阅 IDsubscription_id目标订阅或资源组上的 ARM 权限RBAC。基础构建方式import os from azure.identity import DefaultAzureCredential from azure.mgmt.sql import SqlManagementClient subscription_id os.environ[AZURE_SUBSCRIPTION_ID] credential DefaultAzureCredential() client SqlManagementClient( credentialcredential, subscription_idsubscription_id, )实用注意事项每个进程复用同一个 credential 和 client不要为每次调用重新创建DefaultAzureCredential是同时适配本地与 Azure 环境运行的最快路径本地登录成功本身不够身份还需要具备管理目标 SQL 资源的权限。主权云Sovereign clouds如果不使用 Azure 公有云需要同时对齐凭据 authority 与管理端点主权云环境通常需要为凭据指定非默认的authority并为SqlManagementClient指定非默认的base_url。四、核心用法4.1 列出资源组中的逻辑服务器from azure.identity import DefaultAzureCredential from azure.mgmt.sql import SqlManagementClient credential DefaultAzureCredential() client SqlManagementClient(credential, subscription_id00000000-0000-0000-0000-000000000000) for server in client.servers.list_by_resource_group(rg-app-prod): print(server.name, server.location, server.fully_qualified_domain_name)4.2 创建或更新逻辑服务器服务器创建与更新属于长时操作必须使用begin_方法并等待轮询结果import os from azure.identity import DefaultAzureCredential from azure.mgmt.sql import SqlManagementClient from azure.mgmt.sql.models import Server credential DefaultAzureCredential() client SqlManagementClient(credential, subscription_idos.environ[AZURE_SUBSCRIPTION_ID]) poller client.servers.begin_create_or_update( resource_group_namerg-app-prod, server_namemy-sql-server, parametersServer( locationeastus, administrator_loginsqladminuser, administrator_login_passwordos.environ[AZURE_SQL_ADMIN_PASSWORD], version12.0, minimal_tls_version1.2, public_network_accessEnabled, ), ) server poller.result() print(server.id) print(server.fully_qualified_domain_name)各字段说明字段含义本示例取值location资源所在地域eastusadministrator_login逻辑服务器管理员登录名sqladminuseradministrator_login_password管理员密码建议经环境变量注入勿硬编码AZURE_SQL_ADMIN_PASSWORDversionSQL 服务器版本12.0minimal_tls_version最低 TLS 版本1.2public_network_access是否允许公网访问Enabled4.3 创建数据库数据库负载通常包含location与Sku。对基础供给流程显式构造模型类比猜测 JSON 结构更清晰import os from azure.identity import DefaultAzureCredential from azure.mgmt.sql import SqlManagementClient from azure.mgmt.sql.models import Database, Sku credential DefaultAzureCredential() client SqlManagementClient(credential, subscription_idos.environ[AZURE_SUBSCRIPTION_ID]) poller client.databases.begin_create_or_update( resource_group_namerg-app-prod, server_namemy-sql-server, database_nameappdb, parametersDatabase( locationeastus, skuSku(nameBasic, tierBasic), ), ) database poller.result() print(database.name, database.status)Sku(nameBasic, tierBasic)表示基础层服务层级生产环境可按需替换为Standard、Premium等层级与对应的capacity/family组合。4.4 列出服务器上的数据库from azure.identity import DefaultAzureCredential from azure.mgmt.sql import SqlManagementClient credential DefaultAzureCredential() client SqlManagementClient(credential, subscription_id00000000-0000-0000-0000-000000000000) for database in client.databases.list_by_server(rg-app-prod, my-sql-server): print(database.name, database.status)4.5 创建或更新防火墙规则防火墙规则通过client.firewall_rules管理。该操作不以begin_*暴露直接返回资源from azure.identity import DefaultAzureCredential from azure.mgmt.sql import SqlManagementClient from azure.mgmt.sql.models import FirewallRule credential DefaultAzureCredential() client SqlManagementClient(credential, subscription_id00000000-0000-0000-0000-000000000000) rule client.firewall_rules.create_or_update( resource_group_namerg-app-prod, server_namemy-sql-server, firewall_rule_nameoffice-ip, parametersFirewallRule( start_ip_address203.0.113.10, end_ip_address203.0.113.10, ), ) print(rule.name, rule.start_ip_address, rule.end_ip_address)单一 IP 时将start_ip_address与end_ip_address设为同一地址即可203.0.113.0/24是文档示例常用的测试地址段。4.6 删除数据库或服务器删除操作通常同样是长时操作client.databases.begin_delete( resource_group_namerg-app-prod, server_namemy-sql-server, database_nameappdb, ).result() client.servers.begin_delete( resource_group_namerg-app-prod, server_namemy-sql-server, ).result()五、配置要点subscription_id是必填项。保持显式传入不要默认当前 Azure CLI 选中的订阅总是正确的那一个SqlManagementClient面向 Azure Resource Manager公有云的管理端点是https://management.azure.com许多创建与更新调用要求完整的资源负载而不只是你想修改的字段发送部分对象前请阅读对应模型页该包暴露的操作组远不止上述常见项还包括弹性池elastic pools、故障转移组failover groups、托管实例managed instances、备份策略backup policies、同步组sync groups等。在假设某个资源不受支持之前先检查客户端上的操作组。六、常见坑azure-mgmt-sql仅面向管理面它供给和配置 Azure SQL 资源不执行 SQL 语句许多写操作使用begin_*。忘记.result()时代码可能在 ARM 操作完成前就退出资源名是ARM 资源名不是连接字符串或 DNS 名。请保持resource_group_name、server_name、database_name三者概念区分JavaScript 版文档也特别提示不要传example.database.windows.net这类 DNS 名而应传逻辑服务器资源名Azure 认证问题往往来自RBAC 缺失而非凭据损坏。成功的az login并不能保证写权限特殊防火墙规则地址0.0.0.0是 Azure SQL 的“允许 Azure 服务”行为不是通用公网白名单不要随意使用跨资源保持地域假设一致。服务器与数据库的供给在负载与预期地域、SKU 组合不匹配时常常失败或行为异常该包由 Azure 管理 API 生成仍沿用较旧的 Azure SDK 模型模式。不确定时先核对 Microsoft Learn 上的确切模型类型不要凭空发明字段名。七、版本敏感注意事项PyPI 当前将3.0.1列为azure-mgmt-sql的最新稳定版PyPI 发布页还显示预发布线4.0.0b24。除非项目明确面向该线否则不要采用 beta 版本3.0.1是较旧的管理包发布。Microsoft Learn 参考仍然在线但较新的 Azure SQL 平台特性可能先出现在 REST 文档或门户 UX 中然后才进入该 Python SDK 的示例PyPI 上3.0.1的元数据列出了较旧的 Python 分类器。如果项目运行在更新的 Python 版本上请先验证安装并冒烟测试你需要的具体管理操作不要假设该包跟随其他 Azure SDK 库的较新基线。八、仓库内的配套参考本文档在 Context Hub 中以content/azure/docs/mgmt-sql/python/DOC.md形式维护前端元数据frontmatter声明语言为python、版本3.0.1可被 CLI 的chub get按 ID 拉取其内容组织规范见 Content Guide。如需横向对照可继续阅读仓库内以下强相关文档Azure SQL Management Client For JavaScriptazure/arm-sql10.0.0同族管理面 SDK 的 JS/TS 版本操作组为servers、databases、firewallRules长时操作使用beginCreateOrUpdateAndWaitAzure SQL Virtual Machine Management SDK For Python面向 SQL Server 虚拟机的管理包azure-mgmt-sqlvirtualmachine0.5.0同样强调“管理面不执行 SQL”Azure IdentityPython认证文档DefaultAzureCredential与 Entra ID 认证的配套说明。原文档列出的 Microsoft Learn 包索引、客户端参考、各操作组与模型参考、Azure 认证概览以及 PyPI 包页均为权威外部来源读者可自行在对应平台上检索azure-mgmt-sql确认最新 API 形状本文所有可执行示例与注意事项均以仓库内维护的3.0.1版本为准。赞分享【免费下载链接】context-hub项目地址https://gitcode.com/gh_mirrors/co/context-hub点击查看免费下载相关推荐Context Hub 中的 Azure 网络资源管理实践azure/arm-network JavaScript SDK 完全指南Context Hub 中的 Azure 网络资源管理实践azure/arm network JavaScript SDK 完全指南 导读 本文基于 ConContext Hub 精选文档Azure Speech SDK for Pythonazure-cognitiveservices-speech完整实战指南Context Hub 精选文档Azure Speech SDK for Pythonazure cognitiveservices speech完整实战Context Hub 实战指南使用 azure/arm-storage 19.1.0 管理 Azure 存储账户ARM 控制面Context Hub 实战指南使用 azure/arm storage 19.1.0 管理 Azure 存储账户ARM 控制面 本篇技术指南以 Con上一篇终极AI麻将助手完整指南5步开启智能分析之旅下一篇Cling多解释器环境如何在同一进程中运行多个独立C解释器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考