每小时SQL Server数据库还原

Mar*_*ord 0 .net sql sql-server

我运行一个软件平台,正在考虑建立一个演示站点,以便人们可以登录到假装站点并编辑数据等...

但是我希望数据库'重置'每'x小时/天'有没有办法sql server可以自己做?否则,我将不得不编写应用程序来恢复所有表数据,这将需要大量的工作.

谢谢

Rem*_*anu 5

是的,您创建了一个"干净"状态的数据库快照,然后每小时从干净快照恢复"脏"数据库.看到:

虽然还存在其他方法(备份/恢复,分离/附加和复制文件等),但基于快照的方法可能是最快的,因为快照在文件系统上是不同的(它们使用稀疏文件).如果处于"干净"状态的数据库非常小(表中没有数据)但是在一小时内它变得更大,那么依赖普通备份/恢复可能更简单或更快.

数据库快照仅在SQL Server企业版中可用,因此如果您的演示使用较低版本(标准版,Web版,快速版),则必须使用备份/恢复或基于附加/分离和文件副本的解决方案.

基于附加/分离文件副本的解决方案示例:

  1. 你已经保存了干净的数据库,它的文件是clean_db.mdfclean_db_log.ldf.
  2. 当前的脏数据库在线,其文件是dirty1_db.mdfdirty1_db_log.ldf
  3. 您复制clean_db.mdfdirty2_db.mdfclean_db_log.ldfdirty2_db_log.ldf
  4. 您通过运行分离数据库 sp_detach_db '<dbname>';
  5. 您附加新文件: sp_attach_db '<dbname>', 'dirty2_db.mdf', 'dirty2_db_log.ldf';
  6. 您删除旧文件dirty1_db.mdfdirty1_db_log.ldf

此过程通过在分离/附加操作之前复制干净文件来减少分离和附加之间的停机时间.