用途:在 Azure SQL Database 发生数据丢失、误删库或错误部署后恢复数据。Azure SQL 不支持 RESTORE DATABASE、BACKUP DATABASE、RESTORE HEADERONLY、ALTER DATABASE ... SET RECOVERY 等 T-SQL(分别报 Msg 40510 或 40517),必须用门户、PowerShell、Azure CLI 或 REST API。还原不会覆盖已有数据库,总是新建一个库,需自行完成切换。
主要能力与用法:先用 az sql db show --query earliestRestoreDate 确认可还原时间点;已删除库用 az sql db list-deleted 读取 databaseName 与 deletionDate。时间点还原用 az sql db restore(同服务器,需在保留窗口内,源为主库);已删除库还原加 --deleted-time;异地还原用 az sql db geo-backup list / geo-backup restore(同订阅任意区域,要求备份冗余已为 Geo 或 GeoZone,不追溯);长期保留用 az sql db ltr-backup list / ltr-backup restore(可跨服务器,需事先有 LTR 策略)。保留策略用 az sql db str-policy set(默认 7 天,1–35 天,DTU Basic 为 1–7 天,--diffbackup-hours 仅 12 或 24)和 az sql db ltr-policy set(每项 7 天至 10 年,--week-of-year 1–52)。
收尾与校验:还原后需重命名或改连接串,可用 ALTER DATABASE ... MODIFY NAME 或 az sql db rename,切换有短暂中断。跨订阅或导出到本地只能用 sqlpackage /Action:Export 生成 bacpac,它是某一时刻的逻辑副本,不能替代还原点。校验用 az sql db show 确认 status 为 Online(还原不继承源库标签),再用 sqlcmd 对比还原库与应用库的行数、表数。
限制:时间点还原仅限同服务器,异地还原仅限同订阅,Hyperscale 边界两侧均不支持跨还原;服务器被删除后只剩长期保留一条路;异地还原不承诺携带防火墙规则、Microsoft Entra 管理员或服务器级登录名;不给出固定 RPO/RTO;目标库可能需要 S3 及以上规格。