我运行一个软件平台,正在考虑建立一个演示网站,以便人们可以登录假装网站并编辑数据等......
但是我希望数据库能够'重置'每'x小时/天'有没有办法sql server可以自己做?否则,我将不得不编写应用程序来恢复所有表数据,这将需要大量的工作。
由于
答案 0 :(得分:5)
是的,您创建了一个“干净”状态的数据库快照,然后每小时从干净快照恢复“脏”数据库。参见:
虽然还存在其他方法(备份/恢复,分离/附加和复制文件等),但基于快照的方法可能是最快的,因为快照在文件系统上是不同的(它们使用Sparse Files)。如果处于“干净”状态的数据库非常小(表中没有数据),但在一小时内它变得更大,那么依赖普通备份/恢复可能更简单或更快。
此外,数据库快照仅在SQL Server企业版中可用,因此,如果您的演示使用较低版本(标准版,Web版,快速版),则必须使用备份/恢复或基于附件/分离和文件副本的解决方案。 / p>
基于附加/分离文件副本的解决方案示例:
clean_db.mdf
和clean_db_log.ldf
。dirty1_db.mdf
和dirty1_db_log.ldf
clean_db.mdf
复制到dirty2_db.mdf
和clean_db_log.ldf
复制到dirty2_db_log.ldf
sp_detach_db
'<dbname>';
sp_attach_db
'<dbname>', 'dirty2_db.mdf', 'dirty2_db_log.ldf';
dirty1_db.mdf
和dirty1_db_log.ldf
此过程通过在分离/附加操作之前复制干净文件来减少分离和附加之间的停机时间。
答案 1 :(得分:1)
SQL Server代理作业可以执行此操作。在Management Studio中,创建一个新作业,然后粘贴到还原查询中,例如:
RESTORE DATABASE [test] FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\test.bak' WITH FILE = 1, NOUNLOAD, STATS = 10
GO
答案 2 :(得分:0)
答案 3 :(得分:0)
自从我使用SQL服务器已经有一段时间了,但是如果内存服务正确,你可以在SQL 2005/2008(或DTS,如果你仍然在2000)中使用SSIS来删除数据并从中导入每小时或您想要的任何计划将text / csv / xml文件放入数据库。
http://www.codeproject.com/KB/aspnet/Schedule__Run__SSIS__DTS.aspx
这将为您提供设置工作的一步一步。您需要确定在此过程中发生的操作。
这也比编写应用程序容易得多,因为它已经为你编码了。