[英]SQL Server Database Restore Hourly
我運行一個軟件平台,並正在考慮建立一個演示站點,以便人們可以登錄到一個偽裝站點並編輯數據等。
但是我想讓數據庫每隔“ x小時/天”“重置”,sql server是否可以自行執行此操作? 否則,我將不得不編寫一個應用程序來還原所有表數據,這將需要大量的工作。
謝謝
是的,您創建一個“干凈”狀態的數據庫快照,然后每小時從干凈快照還原“臟”數據庫。 看到:
盡管還存在其他方法(備份/還原,分離/附加和復制文件等),但是基於快照的快照可能是最快的,因為快照是基於文件系統的差異快照(它們使用Sparse Files )。 如果處於“干凈”狀態的數據庫很小(表中沒有數據),但是在那一小時內它變得更大,則依靠普通備份/還原可能會更簡單或更快速。
另外,數據庫快照僅在SQL Server企業版中可用,因此,如果演示使用較低版本(標准版,Web版,Express版),則必須使用基於備份/還原或附加/分離和文件復制的解決方案。
基於附加/分離文件副本的解決方案的示例:
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>';
分離數據庫'<dbname>';
sp_attach_db
'<dbname>', 'dirty2_db.mdf', 'dirty2_db_log.ldf';
dirty1_db.mdf
和dirty1_db_log.ldf
此過程通過在分離/附加操作之前復制干凈文件來減少分離和附加之間的停機時間。
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
您需要結合使用T-SQL批處理來還原數據庫和創建Job 。
自從我使用SQL Server以來已經有一段時間了,但是如果可以正確使用內存,則可以在SQL 2005/2008中使用SSIS(如果仍然使用2000,則可以使用DTS)刪除數據並從文本/每小時或按您想要的時間表將csv / xml文件插入數據庫。
http://www.codeproject.com/KB/aspnet/Schedule__Run__SSIS__DTS.aspx
這將為您逐步設置工作。 不過,您需要確定在此過程中會發生什么動作。
事實證明,這比編碼應用程序容易得多,因為它已經為您編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.