每小时自动恢复数据库的最佳方式

问题描述:

我有一个演示站点,任何人都可以登录并测试管理界面。每小时自动恢复数据库的最佳方式

每小时我想刷新SQL 2008数据库中的所有数据并将其从原始数据恢复。

红门软件有一些很棒的工具,但它们超出了我的预算。

我可以简单地制作数据库的数据文件的备份副本,然后有一个c#控制台应用程序删除它并复制原始。然后我可以有一个Windows时间表任务来运行.exe每小时。

这是简单和免费的......这项工作?

我使用SQL Server 2008 R2的网络版

据我了解,红门软件在技术上更好,因为我可以将它设置为分析数据库,并仅更新更改过的记录,并我上面的方法就像一个“大锤”。

+0

不确定您的版本是否支持此功能,但您也可以查看快照。您可以创建数据库的快照并定期恢复。恢复数据库时,数据库需要处于单用户模式。 – flup 2013-02-20 13:01:01

这是简单和免费的......这项工作?

是的,你可以那样做,只记得把DB在单用户模式下恢复它,否则你恢复之前,将无法

示例脚本

USE master 
GO 

ALTER DATABASE YourDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
GO 



RESTORE DATABASE YourDB FROM DISK=N'D:\Backup\Pristine.BAK' WITH FILE = 1, 
NOUNLOAD, REPLACE, STATS = 10 
GO 

ALTER DATABASE YourDB SET MULTI_USER 
GO 
+0

太棒了,我只是将一个预定的工作设置为SQL来每小时运行一次。谢谢! – aron 2010-05-24 17:05:45

这可以使用SQL脚本化并计划为服务器上的作业,每小时执行一次。既然你有一个备份副本,我认为这是原始的,那么你所需要做的就是使数据库脱机,从备份中恢复,使数据库恢复在线状态。所有这些都可以编写脚本。你需要这些脚本吗?

+0

嗨websch01ar,是的,请发邮件给我。谢谢 aron {at} uswebpro(句号)com – aron 2010-05-24 16:52:50

你可以还要分离数据库,覆盖模板中的数据和日志文件(先前分离),然后重新附加。

+0

没错,但那不是自动的 – aron 2010-05-26 14:46:53

+0

@aron它可以像恢复一样自动化。您可以使用预定的SSIS包,使用xp_cmdshell的脚本或带有sqlcmd的外部Windows命令脚本来执行SQL操作。 – 2010-05-26 15:21:21