簡體   English   中英

SQL Server數據庫每小時還原

[英]SQL Server Database Restore Hourly

我運行一個軟件平台,並正在考慮建立一個演示站點,以便人們可以登錄到一個偽裝站點並編輯數據等。

但是我想讓數據庫每隔“ x小時/天”“重置”,sql server是否可以自行執行此操作? 否則,我將不得不編寫一個應用程序來還原所有表數據,這將需要大量的工作。

謝謝

是的,您創建一個“干凈”狀態的數據庫快照,然后每小時從干凈快照還原“臟”數據庫。 看到:

盡管還存在其他方法(備份/還原,分離/附加和復制文件等),但是基於快照的快照可能是最快的,因為快照是基於文件系統的差異快照(它們使用Sparse Files )。 如果處於“干凈”狀態的數據庫很小(表中沒有數據),但是在那一小時內它變得更大,則依靠普通備份/還原可能會更簡單或更快速。

另外,數據庫快照僅在SQL Server企業版中可用,因此,如果演示使用較低版本(標准版,Web版,Express版),則必須使用基於備份/還原或附加/分離和文件復制的解決方案。

基於附加/分離文件副本的解決方案的示例:

  1. 您已經保存了干凈的db,其文件為clean_db.mdfclean_db_log.ldf
  2. 當前的臟數據庫處於聯機狀態,其文件為dirty1_db.mdfdirty1_db_log.ldf
  3. 您將clean_db.mdf復制到dirty2_db.mdf並將clean_db_log.ldf復制到dirty2_db_log.ldf
  4. 您可以通過運行sp_detach_db '<dbname>';分離數據庫'<dbname>';
  5. 您附加新文件: sp_attach_db '<dbname>', 'dirty2_db.mdf', 'dirty2_db_log.ldf';
  6. 您刪除舊文件dirty1_db.mdfdirty1_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM