【问题标题】:Best way to auto-restore a database every hour每小时自动恢复数据库的最佳方法
【发布时间】:2010-05-24 16:47:22
【问题描述】:

我有一个演示站点,任何人都可以登录并测试管理界面。

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

Red Gate Software 提供了一些很棒的工具,但它们现在超出了我的预算。

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

简单且免费……这行得通吗?

我使用的是 SQL Server 2008 R2 网络版

我知道 Red Gate Software 在技术上更好,因为我可以将其设置为分析数据库并仅更新已更改的记录,而我上面的方法就像“大锤”。

【问题讨论】:

  • 不确定您的版本是否支持此功能,但您也可以查看快照。您可以创建数据库快照并定期恢复它。恢复时数据库需要处于单用户模式。

标签: sql-server database sql-server-2008 database-restore


【解决方案1】:

简单且免费……这行得通吗?

是的,你可以这样做,只记得在恢复之前将数据库置于单用户模式,否则你的恢复将失败

示例脚本

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

【讨论】:

  • 太棒了,我将在 SQL 中设置一个计划作为作业,以每小时运行一次。谢谢!
【解决方案2】:

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

【讨论】:

  • 您好 websch01ar,是的,请给我发电子邮件。感谢 aron {at} uswebpro(句号)com
【解决方案3】:

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

【讨论】:

  • @aron 它可以像还原一样自动化。您可以使用计划的 SSIS 包、使用 xp_cmdshell 的脚本或带有 sqlcmd 的外部 Windows 命令脚本来执行 SQL 操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 2012-09-19
  • 2019-06-27
相关资源
最近更新 更多