回覆列表
  • 1 # 何以笙丶丶

    但是,瞭解如何恢復資料庫是資料庫管理員技能背景中一個至關重要的組成部分。本文將說明如何把一個SQLServer資料庫回覆到恢復一個數據表的時候。情況介紹update或delete語句忘帶了where子句,或where子句精度不夠,執行之後造成了嚴重的後果,

    這種情況的資料恢復只能利用事務日誌的備份來進行,所以如果你的SQL沒有進行相應的全庫備份

    或不能備份日誌(如果為了不讓日誌檔案變大而置trunc.logonchkpt.選項為1),那麼就無法進行資料的恢復了,或者只能恢復到最近一次的備份的資料了。恢復過程注意,在本文中,我假定你的資料庫恢復模式設為FULL。恢復過程的第一步是執行尾日誌備份,(BACKUPLOGStudentTODISK="E:\stulog.dmp")。在恢復一個數據庫之前,為保證上次備份之後發生改變的記錄都包含在恢復過程之中,你可能需要執行這種型別的備份。下一步,你應該查詢資料庫備份檔案在機器或網路中的儲存位置。如果你要在另一臺伺服器上恢復資料庫,最好是把這些檔案複製到目標伺服器中。在備份檔案所在的位置,找出最後一個完整的資料庫備份(這些檔案通常使用.bak為副檔名);你需要恢復這個完整的備份。下面的指令碼將完整的備份檔案應用於NewDatabase資料庫:RESTOREDATABASENewDatabaseFROMDISK="D:BackupFilesTestDatabaseFullBackup.bak"WITHMOVE"PreviousDatabase"TO"D:DataFilesTestDatabase.mdf",MOVE"PreviousDatabase_log"TO"D:DataFilesTestDatabase_Log.ldf",NORECOVERY這段指令碼指出完整備份檔案位於伺服器的D盤中,你正在使用備份檔案恢復NewDatabase這個資料庫。指令碼中的語句將資料檔案和日誌檔案從完整備份檔案轉移到TestDatabase資料庫的新檔案中。指令碼中的最後一個語句——NORECOVERY——非常重要。NORECOVERY模式有三種選項,如下所示:NORECOVERY:告訴SQLServer你沒有完成恢復資料庫的過程,隨後會出現恢復檔案。當資料庫處於這種狀態時,資料庫還不能使用,因而不允許建立連線。RECOVERY:告訴SQLServer你已經完成資料庫恢復過程,資料庫即將準備就緒。這是預設選項,也是最常用的選項。STANDBY:告訴SQLServer當前資料庫還未為完成恢復做好準備,隨後可以使用日誌檔案進行恢復。如果必要,你可以使用這個選項為恢復資料庫建立連線。但是,如果當前不存在連線,將來的事務日誌只能應用於資料庫。一旦你使用NORECOVERY選項恢復了完整備份,你可以開始應用事務日誌備份或差異備份。差異備份差異備份是指對上次完整資料庫備份後資料庫發生的任何改變進行備份。如果你有幾個差異備份,你只需要恢復最後一個備份檔案。在這種情況下,並不存在差異備份,因此你可以直接轉向事務日誌備份。事務日誌備份事務日誌備份保留上次事務日誌備份後發生的所有事務的痕跡;它還允許你把資料庫恢復到資料庫發生錯誤之前的一個時間點。事務日誌備份按順序發生,從而建立一個備份鏈。在把一連串事務日誌備份恢復到一個時間點時,事務日誌檔案也必須按順序恢復。當你使用一個數據庫維護計劃來建立事務日誌備份時,事務日誌檔名中往往包含一個時間指示器。下面的指令碼使用NORECOVERY選項應用三個事務日誌備份,最後一個語句把資料庫恢復到最後一個事務日誌檔案的結束點。RESTORELOGNewDatabaseFROMDISK=""D:BackupFilesTestDatabase_TransactionLogBackup1.trn"WITHNORECOVERYRESTORELOGNewDatabaseFROMDISK=""D:BackupFilesTestDatabase_TransactionLogBackup2.trn"WITHNORECOVERYRESTORELOGNewDatabaseFROMDISK=""D:BackupFilesTestDatabase_TransactionLogBackup3.trn"WITHNORECOVERYRESTORELOGNewDatabaseFROMDISK=""D:BackupFilesTestDatabase_TransactionLogBackup4.trn"WITHRECOVERY恢復到一個時間點在上面的例子中,你把資料庫恢復到最後一個事務日誌的結束點。如果你想把資料庫恢復到事務日誌結束前的某個特定的時間點,你必須使用STOPAT選項。下面的指令碼把日誌序列中的第四個事務日誌恢復到4:01AM——正好在資料庫出錯之前。RESTORELOGNewDatabaseFROMDISK=""D:BackupFilesTestDatabase_TransactionLogBackup4.trn"WITHSTOPAT=N"6/28/20074:01:45PM",RECOVERY既然你已經把資料庫恢復到一個你指定的時間點上,現在該是決定如何幫助開發者,使他們的工作更加輕鬆的時候了。

  • 中秋節和大豐收的關聯?
  • 最近做夢老是夢到蛇是什麼原因啊?