误删Azure SQL数据后,如何复制指定时间点库至新数据库?
Azure SQL数据库误删数据的时间点恢复方案
- 可以将目标数据库的某一过去时间点副本恢复到新的Azure SQL数据库,若需要本地副本,可从这个临时库导出后导入本地SQL Server。
- 你提到的类似
CREATE DATABASE TempRestore AS COPY OF MainDb IN POINT OF TIME的语法Azure SQL不直接支持,但可通过官方工具或T-SQL命令实现等效效果。
实现方式
1. 恢复到新Azure SQL数据库
通过Azure门户操作
在Azure门户中找到原数据库,进入「备份」选项卡,选择「恢复」,指定需要恢复的时间点,输入新数据库名称(比如TempRestore),确认后即可完成恢复。
通过T-SQL命令操作
使用RESTORE DATABASE语句,需先获取对应时间点的备份文件URL(可通过Azure门户或PowerShell获取),示例语法:
RESTORE DATABASE TempRestore FROM URL = 'https://yourstorageaccount.blob.core.windows.net/backups/MainDb_backup_202405201000.bak' WITH RECOVERY, MOVE 'MainDb_Data' TO '/var/opt/mssql/data/TempRestore.mdf', MOVE 'MainDb_Log' TO '/var/opt/mssql/data/TempRestore.ldf', REPLACE, STOPAT = '2024-05-20 10:00:00' -- 替换为你需要的时间点
2. 恢复到本地数据库
- 先按上述方法将时间点副本恢复到临时Azure SQL数据库;
- 使用SqlPackage工具或Azure门户将临时库导出为BACPAC文件;
- 将BACPAC文件导入到本地SQL Server实例中。
关键注意事项
- 时间点恢复仅支持在自动备份保留期内的时间点(基本/标准层默认7天,通用/业务关键层默认35天,可手动延长);
- 恢复后的新数据库默认继承原库的服务层级和计算规格,可按需调整以降低成本;
- 临时数据库使用完毕后建议及时删除,避免产生不必要的费用。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

