通过现有数据库还原Azure SQL数据库以维护备份历史记录

时间:2019-09-25 11:16:17

标签: database azure azure-sql-database backup restore

我正在为我们的Web应用程序设置一个Azure SQL数据库。我们启用了时间点保留(PITR)和长期保留(LTR)。我们的流程是将备份保留1年。

定期,我们需要通过应用SQL脚本来升级数据库。有时升级脚本有问题,升级失败。我们需要将数据库回滚到以前的版本。

要回滚数据库,我尝试了还原功能。但是,还原功能似乎只能创建新的数据库。问题就在这里。还原到新数据库并删除旧数据库效果很好,但是我们丢失了所有备份历史记录。看来备份对数据库(可能对ResourceId)很累。

那么,如何使用Azure SQL数据库并定期还原数据库并仍然保留所有备份历史记录?

2 个答案:

答案 0 :(得分:0)

不幸的是,从Azure SQL数据库中的备份还原总是会创建一个新数据库。这里的秘密可能是使用原始数据库的名称重命名新恢复的数据库。您甚至会看到已还原的数据库重命名后,它会显示所有安全建议,以及原始数据库的自动调整建议。

因此删除现有数据库,还原数据库,然后将其重命名为原始数据库。

答案 1 :(得分:0)

您可以参考本文档Recover an Azure SQL database using automated database backups,它给出的答案是所有恢复都在创建新数据库。

默认情况下,SQL数据库备份存储在地理复制的Blob存储(RA-GRS)中。以下选项可用于使用自动数据库备份进行数据库恢复: 在保留期内恢复到指定时间点的同一SQL数据库服务器上创建新数据库。

  • 在恢复到同一SQL数据库服务器上创建数据库 删除数据库的删除时间。
  • 在同一区域中的任何SQL数据库服务器上创建一个新数据库 恢复到最新备份的位置。
  • 在任何其他区域的任何SQL数据库服务器上创建新数据库 恢复到最新复制备份的位置。

如果配置了备份长期保留,则还可以从任何SQL数据库服务器上的任何LTR备份中创建新数据库。

  

重要的

     

还原期间您不能覆盖现有数据库。

“那么,我如何使用Azure SQL数据库并定期还原数据库并仍然保留所有备份历史记录?”

您可以使用数据库替换

如果已还原的数据库打算替代原始数据库,则应指定原始数据库的计算大小和服务层。然后,您可以重命名原始数据库,并使用T-SQL中的ALTER DATABASE命令为恢复的数据库赋予原始名称。

希望这会有所帮助。