4. Azure SQL数据库部署与配置

Azure SQL Database 是 SQL Server 在云端的 PaaS 形态,部署决策的核心不是“装在哪台机器”,而是“选哪种购买模型、放在哪个服务层级、如何暴露网络入口、应用如何拿到连接串”。本节围绕单库与弹性池两条部署路径,把服务层级、DTU/vCore 模型、连接字符串和防火墙规则串成一条可落地的配置链。

一、单库与弹性池:先判断资源使用模式

单数据库(Single Database)为每个库独立分配计算与存储资源,适合资源需求稳定、库数量少、单库负载可预测的场景。弹性池(Elastic Pool)则把一组数据库放入共享资源池,按池整体分配 eDTU 或 vCore,适合多租户 SaaS、按客户分库、库数量多且负载波峰错开的场景。判断依据不是库的数量,而是“峰值是否同时发生”:若多个库的 CPU 峰值高度重叠,弹性池无法通过共享摊薄成本,反而可能互相争抢。

创建单库时,关键参数包括:服务器(逻辑服务器,作为管理边界而非物理机)、区域、购买模型、服务层级、计算层级、最大存储、排序规则、备份冗余。创建弹性池时,先建池并设定池的 eDTU/vCore 与存储上限,再把数据库加入池;每个库还可设置最小/最大 eDTU 或 vCore,用于限制单库对池资源的占用,防止“吵闹邻居”。

二、DTU 与 vCore:两种购买模型的换算与选择

DTU 模型把 CPU、内存、读写混合为单一度量单位,层级为 Basic、Standard、Premium,常见档位如 S0=10 DTU、S3=100 DTU、P1=125 DTU。vCore 模型把计算与存储解耦,可选择“已预配计算”或“无服务器”,并支持 Azure 混合权益(AHB)复用已有 SQL Server 许可证。两者不是简单线性换算,但工程上常用近似对照:100 DTU 约等于 1 vCore 的入门量级,实际应以目标负载压测为准。

选择路径可归纳为:已有 SQL Server 许可证、需要精细控制 vCore/内存、需要无服务器自动暂停,选 vCore;负载轻、希望按固定档位快速起步、不涉及许可证复用,选 DTU。服务层级方面,General Purpose 适合通用业务,Business Critical 提供本地 SSD 与更高 IOPS,Hyperscale 面向超大规模存储快速伸缩。示例:某订单库日均 40% CPU、峰值 80%,可先选 Standard S3(100 DTU)观察一周,若峰值持续超过 80% 再升 S4 或转 vCore 2 核。

Azure SQL Database 部署决策与配置链 部署形态 单数据库 独立资源 · 负载稳定 · 库少 弹性池 共享资源 · 波峰错开 · 多租户 购买模型与服务层级 DTU 模型 Basic / Standard / Premium · S0=10DTU vCore 模型 预配/无服务器 · AHB 许可证复用 服务层级 General Purpose 通用 Business Critical 高IOPS Hyperscale 超大规模 连接字符串管理 Server=tcp:myserver.database.windows.net,1433; Database=OrderDB;Authentication=Active Directory Default;Encrypt=True;TrustServerCertificate=False; • 托管标识 / Entra ID 免密,避免明文口令 • 连接串存 Key Vault,应用按环境注入 • 弹性池连接串指向池内库,非池本身 防火墙规则 服务器级规则:允许 Azure 服务访问 = 开/关 客户端 IP 规则:起始 IP ~ 结束 IP 私有访问(推荐生产): • 专用终结点 Private Endpoint • 虚拟网络规则 + 服务终结点 • 关闭公网访问,仅内网解析 决策顺序:形态 → 购买模型 → 服务层级 → 连接串 → 网络入口

三、连接字符串:从明文口令到免密托管标识

Azure SQL 的连接串与本地 SQL Server 最大差异在于服务器名是逻辑服务器 FQDN,端口固定 1433,且必须启用加密。典型 ADO.NET 形式如下:

Server=tcp:myserver.database.windows.net,1433;
Database=OrderDB;
Authentication=Active Directory Managed Identity;
Encrypt=True;
TrustServerCertificate=False;
Connect Timeout=30;

生产环境不建议把账号口令写进连接串。优先使用托管标识(Managed Identity)或 Entra ID 身份验证,应用通过 Authentication=Active Directory Managed Identity 免密连接;连接串本身存入 Azure Key Vault,由应用配置按环境注入。需要注意:弹性池的连接串指向池内的具体数据库,而不是池资源本身;池只是资源容器,不提供独立连接端点。

四、防火墙规则:公网白名单与私有终结点

逻辑服务器默认拒绝所有公网连接。最直接的方式是添加客户端 IP 规则,把开发机公网 IP 加入白名单;若勾选“允许 Azure 服务访问”,则同区域 Azure 资源可绕过公网规则,但这会扩大暴露面,生产环境应谨慎。更稳妥的做法是使用专用终结点(Private Endpoint),把数据库接入虚拟网络,通过私有 IP 解析访问,并关闭公网访问。

配置顺序建议:先建逻辑服务器并设定管理员(Entra ID 管理员优先),再创建单库或弹性池,随后配置网络入口,最后把连接串写入应用配置并验证。验证时可用 sqlcmd 或应用健康检查执行 SELECT 1,若报错“未找到服务器”多为 DNS 或防火墙未放行,若报“登录失败”则检查身份验证方式与数据库用户映射。

弹性池的成本优势来自“波峰错开”。若各库峰值同时出现,应改用单库或提高池上限,而不是继续往池里塞库。
DTU 与 vCore 的换算只是量级参考,不能替代压测。上线前应采集目标负载的 CPU、数据 IO、日志写入三项指标,再决定档位。

五、一份可执行的配置检查清单

环节关键项示例值 / 判断依据
部署形态单库 / 弹性池库多且波峰错开 → 弹性池
购买模型DTU / vCore有 SQL 许可证 → vCore + AHB
服务层级GP / BC / Hyperscale通用业务 → General Purpose
计算档位S3=100DTU 或 2 vCore峰值 CPU 持续 >80% 则升档
连接串托管标识 + Key VaultEncrypt=True,禁用明文口令
网络入口Private Endpoint 优先生产关闭公网访问
验证SELECT 1 / 健康检查DNS、防火墙、身份映射逐项排查

把上述环节串起来,Azure SQL 的部署就不再是“点几下创建”,而是一条有判断依据的配置链:先看负载形态决定单库还是弹性池,再按许可证与规模选 DTU 或 vCore,接着定服务层级与档位,最后用托管标识连接串和私有终结点把访问路径收紧。每一步都有可观察的指标和可回退的调整空间,这才是云化部署与本地安装最本质的区别。