SQL Server 2012 數據庫備份還原



1.數據庫備份

    數據庫備份,即從SQL Server數據庫或其事務日誌中將數據或日誌記錄複製到相應的設備,以創建數據副本或事務日誌副本。數據還原用於將指定SQL Server備份中的所有數據和日誌複製到指定數據庫,然後通過應用記錄的更改使該數據在時間上向前移動,以回滾備份中記錄的所有事物。
    設計一個好的備份和還原策略需考慮多方面的因素,包括備份內容、備份計劃、備份介質、備份設備、備份類型和恢復模式。在SQL Server 2012系統中,常見的備份類型有完整備份、差異備份、事務日誌備份、文件和文件組備份。
    “恢復模式”是一種數據庫屬性,它控制如何記錄事務、事務日誌是否需要或允許備份,以及可以使用哪些類型的還原操作。有三種恢復模式:簡單恢復模式、完整恢復模式和大容量日誌恢復模式。通常情況下,數據庫使用簡單恢復模式或完整恢復模式。
    ① 簡單恢復模式:數據庫記錄大多數事務,並不會記錄所有的事務,數據庫在備份之後,自動截斷事務日誌,即把不活動的事務日誌刪除。因此,不支持事務日誌備份,也不能恢復到出現故障的時間點,具有較高的安全風險,建議只有對數據安全性要求不高的數據庫使用該模式。
    ② 完整恢復模式:數據庫完整地記錄了所有的事務,並保留所有事務的詳細日誌。支持恢復到出現故障的時間點。該模式可在最大範圍內防止出現故障時丟失數據,爲數據安全提供了全面的保護。建議對數據安全性、可靠性要求高的數據庫使用該恢復模式。
    ③ 大容量日誌恢復模式:數據庫不會對所有事務做完整詳細的記錄,只對大容量操作做最少的記錄。通常情況下,只有在要進行大容量操作之前,才改用該恢復模式,大容量操作結束之後,再設置回原來的恢復模式。


2.創建備份設備

    在SQL Server 2012中,數據庫備份設備分爲物理備份設備和邏輯備份設備。物理備份設備是指保存備份數據的操作系統所識別的磁帶或磁盤文件。邏輯備份設備是指數據庫系統所識別的邏輯對象,是指向特定物理設備的可選用戶定義名稱,是物理備份設備的一個邏輯別名,別名名稱必須唯一。

使用SSMS工具創建備份設備
  1. 展開數據庫實例,打開“服務器對象”,右擊“備份設備”,選擇“新建備份設備”
    在這裏插入圖片描述
  2. 在備份設備窗口中,輸入備份設備名稱,選擇備份設備路徑和文件名,點擊“確定”,完成備份設備的創建
    在這裏插入圖片描述
  3. 備份設備創建成功
    在這裏插入圖片描述
使用SQL方式創建備份設備

語法格式:

EXEC sp_addumpdevice <存儲類型> ,<備份設備邏輯名>, <物理文件路徑>

使用示例:

use master
go
EXEC sp_addumpdevice 'disk' 'schoolDB_backup' 'E:\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\schoolDB_backup.bak'

3.完整備份與還原

使用SSMS工具完整備份與還原
  1. 右擊需要備份的數據庫,選擇“任務”,再選擇“備份”
    在這裏插入圖片描述
  2. 在“備份數據庫”窗口中選擇備份類型爲“完整”,點擊“刪除”按鈕,將目標下的原路徑刪除
    在這裏插入圖片描述
  3. 點擊“添加”按鈕,彈出選擇備份目標對話框,選擇備份設備並選中創建的備份設備,點擊“確定”按鈕返回
    在這裏插入圖片描述
  4. 在選擇頁中選擇“選項”,備份介質中選擇“覆蓋所有現有備份集”,點擊確定完成數據庫完整備份
    在這裏插入圖片描述
  5. 刪除源數據庫,要恢復完整備份的數據庫,右擊“數據庫”,選擇“還原數據庫”
    在這裏插入圖片描述
  6. 在“還原數據庫”窗口中,選擇源爲“設備”,點擊“…”按鈕
    在這裏插入圖片描述
  7. 彈出“選擇備份設備”窗口,點擊“添加”按鈕,選擇對應的備份設備,返回“還原數據庫”窗口
    在這裏插入圖片描述
  8. 選擇需要還原的數據庫,勾選需要還原的備份文件,點擊“確定”進行還原
    在這裏插入圖片描述
  9. 數據庫還原成功
    在這裏插入圖片描述
使用SQL方式完整備份與還原

語法格式:

--備份數據庫
USE master
GO
BACKUP DATABASE <數據庫> TO <備份設備>

--還原數據庫
USE master
GO
RESTORE DATABASE <數據庫> FROM <備份設備>

使用示例:

--備份數據庫
USE master
GO
BACKUP DATABASE schoolDB TO schoolDB_backup

--還原數據庫
USE master
GO
RESTORE DATABASE schoolDB FROM schoolDB_backup

4.差異備份與還原

使用SSMS工具差異備份與還原
  1. 創建一份完整數據庫備份
  2. 修改數據庫中的數據或結構,本處將student表中的數據複製到student_new表中
    在這裏插入圖片描述
  3. 右擊需要備份的數據庫,選擇“任務”,再選擇“備份”
    在這裏插入圖片描述
  4. 在“備份數據庫”窗口中選擇備份類型爲“差異”,如果目標不是備份設備,則參照完整備份處理
    在這裏插入圖片描述
  5. 在選擇頁中選擇“選項”,備份介質中選擇“追加到現有備份集”,點擊確定完成數據庫差異備份
    在這裏插入圖片描述
  6. 刪除源數據庫,要恢復備份的數據庫,右擊“數據庫”,選擇“還原數據庫”
    在這裏插入圖片描述
  7. 在“還原數據庫”窗口中,選擇源爲“設備”,點擊“…”按鈕
    在這裏插入圖片描述
  8. 彈出“選擇備份設備”窗口,點擊“添加”按鈕,選擇對應的備份設備,返回“還原數據庫”窗口
    在這裏插入圖片描述
  9. 選擇需要還原的數據庫,勾選需要還原的備份文件,點擊“確定”進行還原
    在這裏插入圖片描述
  10. 數據庫還原成功
    在這裏插入圖片描述
使用SQL方式差異備份與還原

語法格式:

--數據庫差異備份
USE master
GO
BACKUP DATABASE <數據庫> TO <備份設備>
WITH DIFFERENTIAL

--數據庫還原
--備份集編號可在對應的備份設備右擊選擇屬性,查看備份介質即可找到備份集的編號
USE master
GO
RESTORE DATABASE <數據庫> FROM <備份設備>
WITH FILE=<備份集標號>,NORECOVERY  --NORECOVERY  表示還原未恢復
GO
...
GO
RESTORE DATABASE  <數據庫> FROM <備份設備>
WITH FILE=<備份集標號>,RECOVERY --RECOVERY  表示還原已恢復

使用示例:

--數據庫差異備份
USE master
GO
BACKUP DATABASE schoolDB TO schoolDB_backup
WITH DIFFERENTIAL

--數據庫還原
USE master
GO
RESTORE DATABASE schoolDB FROM schoolDB_backup
WITH FILE=1,NORECOVERY 
GO
RESTORE DATABASE schoolDB FROM schoolDB_backup
WITH FILE=2,RECOVERY

5.事務日誌備份與還原

使用SSMS工具事務日誌備份與還原
  1. 創建一份完整數據庫備份
  2. 修改數據庫中的數據或結構,本處將student表中的數據複製到student_new表中
    在這裏插入圖片描述
  3. 右擊需要備份的數據庫,選擇“任務”,再選擇“備份”
    在這裏插入圖片描述
  4. 在“備份數據庫”窗口中選擇備份類型爲“事務日誌”,如果目標不是備份設備,則參照完整備份處理
    在這裏插入圖片描述
  5. 在選擇頁中選擇“選項”,備份介質中選擇“追加到現有備份集”,點擊確定完成數據庫事務日誌備份
    在這裏插入圖片描述
  6. 刪除新創建的數據表,使用事務日誌備份恢復數據庫,右擊“數據庫”,選擇“還原數據庫”
    在這裏插入圖片描述
  7. 在“還原數據庫”窗口中,選擇源爲“設備”,點擊“…”按鈕
    在這裏插入圖片描述
  8. 彈出“選擇備份設備”窗口,點擊“添加”按鈕,選擇對應的備份設備,返回“還原數據庫”窗口
    在這裏插入圖片描述
  9. 選擇需要還原的數據庫,勾選需要還原的備份文件,點擊“確定”進行還原
    在這裏插入圖片描述
  10. 在選擇頁中選擇“選項”,在還原選項中勾選“覆蓋現有數據庫”,並在服務器連接中勾選“關閉到目標數據庫的現有連接”,點擊“確定”進行數據庫還原
    在這裏插入圖片描述
  11. 數據庫還原成功
    在這裏插入圖片描述
使用SQL方式事務日誌備份與還原

語法格式:

--備份事務日誌
USE master
GO
BACKUP LOG <數據庫> TO <備份設備>

--恢復數據庫備份
--備份集編號可在對應的備份設備右擊選擇屬性,查看備份介質即可找到備份集的編號
USE master
GO
RESTORE DATABASE <數據庫> FROM <備份設備>
WITH REPLACE,FILE=<備份集編號>,NORECOVERY   --NORECOVERY  表示還原未恢復
GO
...
GO
RESTORE LOG <數據庫> FROM <備份設備>
WITH FILE=<備份集編號>,RECOVERY   --RECOVERY  表示還原已恢復

使用示例:

--備份事務日誌
USE master
GO
BACKUP LOG schoolDB TO schoolDB_backup

--恢復數據庫備份
USE master
GO
RESTORE DATABASE  schoolDB FROM schoolDB_backup
WITH REPLACE,FILE=1,NORECOVERY   --NORECOVERY  表示還原未恢復
GO
RESTORE LOG  schoolDB FROM schoolDB_backup
WITH FILE=2,RECOVERY   --RECOVERY  表示還原已恢復


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章