Azure SQL中超出时间点恢复范围的误删记录有没有简易恢复方法?
Azure SQL超期误删行恢复操作指导
前提说明
时间点恢复(PITR)默认最长保留35天,如果你要恢复的删除记录超出这个窗口,只能通过以下两种场景的对应方案操作:
场景1:你已经开启了长期保留备份(LTR)
长期保留备份是Azure SQL专属的备份功能,最多可将全量备份保留10年,只要删除操作发生的时间在你配置的LTR保留周期内,就可以正常恢复:
- 操作步骤:
- 打开Azure门户,进入你的Azure SQL数据库所属的SQL服务器管理页
- 左侧菜单栏找到备份选项,点击后切换到「长期保留」标签
- 筛选出删除操作发生时间之前的LTR备份记录,选中后点击「恢复」按钮
- 按页面提示填写恢复后新数据库的名称、所属资源组,提交后等待恢复完成
- 新库恢复完成后,执行
SELECT查询找到你需要的被删除行,将数据同步回原生产库即可
提示:恢复操作会生成一个独立的新数据库,完全不会影响你当前正在运行的生产库,没有生产风险。
场景2:你没有开启长期保留备份
这种情况没有官方支持的标准恢复路径,你可以优先排查两个兜底方案:
- 方案1:查找历史手动导出的BACPAC备份
如果你之前在删除操作发生前,手动导出过库的BACPAC文件存放在Blob存储或者本地磁盘,可以直接将该BACPAC导入到新的Azure SQL库中,提取需要的被删除行数据。 - 方案2:检查是否开启了审计、变更跟踪或变更数据捕获(CDC)功能
- 如果你开启了Azure SQL审计功能,且审计日志保留周期覆盖了删除时间,可以直接搜索审计日志中的
DELETE操作记录,拿到被删除行的原始值。 - 如果你提前给核心表开启了变更跟踪或者CDC,且日志保留周期足够,也可以直接从对应的系统表中查询到被删除的历史数据。
- 如果你开启了Azure SQL审计功能,且审计日志保留周期覆盖了删除时间,可以直接搜索审计日志中的
如果以上两个兜底方案都不满足,本次被删除的行数据无法找回,建议后续配置以下防护机制避免同类问题:
- 开启长期保留备份,按照你的业务回溯需求设置保留时长
- 给核心业务表开启变更跟踪或CDC,配置合理的日志保留周期
- 定期手动导出核心数据的BACPAC存档到低成本冷存储
内容的提问来源于stack exchange,提问作者Bernard
相关产品推荐
相关产品推荐

