SQL Server 2012 備份與還原詳解


在這里插入圖片描述

本文將演示使用SSMS數據庫管理工具進行數據庫備份及還原的詳細步驟,希望對你有幫助。

預備知識

數據庫備份

   數據庫備份,即從SQL Server 數據庫或其事務日志中將數據或日志記錄復制到相應的設備,以創建數據副本或事務日志副本。數據還原用於將指定 SQL Server 備份中的所有數據和日志復制到指定數據庫,然后通過應用記錄的更改使該數據在時間上向前移動,以回滾備份中記錄的所有事物。
    
    設計一個好的備份和還原策略需考慮多方面的因素,包括備份內容、備份計划、備份介質、備份設備、備份類型和恢復模式。在 SQL Server 2012 系統中,常見的備份類型有完整備份、差異備份、事務日志備份、文件和文件組備份

  • 完整備份:將數據庫的數據全部備份。

  • 差異備份:將上一次備份后到現在對數據的修改進行備份。因此差異備份不能單獨使用,只能先還原上一次的完整備份后,才能還原差異備份,當有多個差異備份時,只需要選擇指定日期的差異備份文件即可,不需要逐個還原在此期間的差異備份。
       
     “恢復模式(Recovery model)”是一種數據庫屬性,它控制如何記錄事務、事務日志是否需要或允許備份,以及可以使用哪些類型的還原操作。有三種恢復模式:簡單恢復模式、完整恢復模式和大容量日志恢復模式。通常情況下,數據庫使用簡單恢復模式或完整恢復模式。

  • 簡單恢復模式:數據庫記錄大多數事務,並不會記錄所有的事務,數據庫在備份之后,自動截斷事務日志,即把不活動的事務日志刪除。因此,不支持事務日志備份,也不能恢復到出現故障的時間點,具有較高的安全風險,建議只有對數據安全性要求不高的數據庫使用該模式。

  • 完整恢復模式:數據庫完整地記錄了所有的事務,並保留所有事務的詳細日志。支持恢復到出現故障的時間點。該模式可在最大范圍內防止出現故障時丟失數據,為數據安全提供了全面的保護。建議對數據安全性、可靠性要求高的數據庫使用該恢復模式。

  • 大容量日志恢復模式:數據庫不會對所有事務做完整詳細的記錄,只對大容量操作做最少的記錄。通常情況下,只有在要進行大容量操作之前,才改用該恢復模式,大容量操作結束之后,再設置回原來的恢復模式。

創建備份設備

  在 SQL Server 2012 中,數據庫備份設備分為物理備份設備邏輯備份設備

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

使用SSMS工具創建備份設備

展開數據庫實例,打開“Server Objects”,右擊“Backup Devices”,選擇“New Backup Devices” 。

在這里插入圖片描述

在備份設備窗口中,輸入備份設備名稱,選擇備份設備路徑和文件名,點擊OK,完成備份設備的創建。

在這里插入圖片描述

備份設備創建成功

在這里插入圖片描述

使用SQL方式創建備份設備

語法格式:

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

使用示例:

use master
go
EXEC sp_addumpdevice 'disk' 'studyDB_backup' 'F:\Program Files\Microsoft SQL Server\MSSQL11.STUDR\MSSQL\Backup\studyDB_backup.bak'


使用SSMS工具備份與還原

完整備份與還原

本文將對新建數據庫TEST01 進行備份演示。

建表

為了便於還原效果的驗證,現在數據庫中新建一張表 dbo.classs 。

在這里插入圖片描述

查詢數據如下:

select * from dbo.class

在這里插入圖片描述

完整備份

使用SSMS工具完整備份數據庫TEST01,步驟如下:

1)右擊數據庫 TEST01 -》選擇 Tasks -》選擇 Back Up 。

在這里插入圖片描述

2)在備份數據庫彈出框中選擇 Backup type為 Full -》點擊 Remove 刪除系統生成的目標文件。

在這里插入圖片描述

3)點擊 Add按鈕彈出選擇備份目標對話框

在這里插入圖片描述

4)在選擇備份目標彈出框中點擊選擇備份路徑 -》輸入數據備份文件名稱 -》點擊OK

在這里插入圖片描述

5)Options 保留默認配置 -》點擊OK

在這里插入圖片描述

6)在備份數據庫彈出框點擊OK

在這里插入圖片描述

至此,已完成數據庫 TEST01 的完整備份。

刪除數據庫

7)右擊數據庫 TEST01 -》選擇 Delete 。

在這里插入圖片描述

8)點擊 OK 刪除數據庫。

在這里插入圖片描述

注意:在刪庫之前需要斷開其他連接,否則會報如下錯誤:

在這里插入圖片描述

9)數據庫 TEST01 已刪除

在這里插入圖片描述

完整備份還原

使用SSMS工具利用完整備份還原數據庫TEST01,步驟如下:

10)右擊Databases -》選擇 Restore Database 。

在這里插入圖片描述

11)Source 選擇 Device -》點擊 ... -》在彈出的窗口中 點擊 Add 添加用來恢復的備份文件。

在這里插入圖片描述

12)選擇備份文件 -》點擊OK

在這里插入圖片描述

13)可看到備份文件已添加成功 -》點擊OK

在這里插入圖片描述

14)General 頁配置完成后如下圖所示

在這里插入圖片描述

15)Files 頁顯示如下圖

在這里插入圖片描述

16)在 Options 頁,注意Recovery state 選擇 “RESTORE WITH RECOVERY” (默認選項) -》點擊OK

在這里插入圖片描述

17)在還原數據庫彈出框點擊確定

在這里插入圖片描述

至此,數據庫 TEST01 還原完成。

在這里插入圖片描述

數據檢查

select * from dbo.class

在這里插入圖片描述

差異備份

建表

現復制dbo.class 表,命名為 dbo.classbak

select * into dbo.classbak from dbo.class

在這里插入圖片描述

差異備份

使用SSMS工具差異備份數據庫TEST01,步驟如下:

18)右擊數據庫 TEST01 -》選擇 Tasks -》選擇 Back Up 。

在這里插入圖片描述

19)在備份數據庫彈出框中選擇 Backup type為 Differential -》點擊 Remove 刪除系統生成的目標文件。

在這里插入圖片描述

20)點擊 Add按鈕彈出選擇備份目標對話框

在這里插入圖片描述

21)在選擇備份目標彈出框中點擊選擇備份路徑 -》輸入數據備份文件名稱 -》點擊OK

在這里插入圖片描述

配置完成后,Genetal 頁如下圖所示:

在這里插入圖片描述

22)Options 保留默認配置 -》點擊OK

在這里插入圖片描述

23)在備份數據庫彈出框點擊OK

在這里插入圖片描述

刪除數據庫

說明:為了做一次完整的恢復過程演示,先刪除剛才還原的數據庫 TEST01。
步驟見 7)~ 9)

差異備份還原

說明:在做差異備份前需先做完整備份的還原,否則會報如下錯誤:
在這里插入圖片描述

下面做正確還原步驟的演示

完整備份還原

24)右擊Databases -》選擇 Restore Database 。

在這里插入圖片描述

25)Source 選擇 Device -》點擊 ... -》在彈出的窗口中 點擊 Add 添加用來恢復的備份文件。

在這里插入圖片描述

26)選擇備份文件 -》點擊OK

在這里插入圖片描述

27)可看到備份文件已添加成功 -》點擊OK

在這里插入圖片描述

28)General 頁配置完成后如下圖所示

在這里插入圖片描述

29)Files 頁顯示如下圖

在這里插入圖片描述

30)在 Options 頁,注意Recovery state 選擇 “NORESTORE WITH RECOVERY” -》點擊OK

在這里插入圖片描述

31)在還原數據庫彈出框點擊確定

在這里插入圖片描述

此時,數據庫處於 Restoring 狀態,不可用,等待着下一步還原操作。

在這里插入圖片描述

差異備份還原

32)右擊數據庫 TEST01 -》選擇 Tasks -》選擇 Restore -》選擇 Database 。

在這里插入圖片描述

33)Source 選擇 Device -》點擊 ... -》在彈出的窗口中 點擊 Add 添加用來恢復的備份文件。

在這里插入圖片描述

34)選擇備份文件 -》點擊OK

在這里插入圖片描述

35)可看到備份文件已添加成功 -》點擊OK

在這里插入圖片描述

36)General 頁配置完成后如下圖所示

在這里插入圖片描述

37)Files 頁顯示如下圖

在這里插入圖片描述

38)在 Options 頁,注意Recovery state 選擇 “RESTORE WITH RECOVERY” (默認選項) -》點擊OK

在這里插入圖片描述

39)在還原數據庫彈出框點擊確定

在這里插入圖片描述

至此,數據庫 TEST01 還原完成。

在這里插入圖片描述

數據檢查

select * from dbo.class
select * from dbo.classbak

結果均如下:

在這里插入圖片描述

數據無誤!

事務日志備份

現添加表格 dbo.classbak02

select * into dbo.classbak02 from dbo.class

使用SSMS工具對數據庫TEST01做事務日志備份,步驟如下:

40)右擊數據庫 TEST01 -》選擇 Tasks -》選擇 Back Up 。

在這里插入圖片描述

41)在備份數據庫彈出框中選擇 Backup type為 Transaction Log -》點擊 Remove 刪除系統生成的目標文件。

在這里插入圖片描述

42)點擊 Add按鈕彈出選擇備份目標對話框

在這里插入圖片描述

43)在選擇備份目標彈出框中點擊選擇備份路徑 -》輸入數據備份文件名稱 -》點擊OK

在這里插入圖片描述

44)General 頁配置完成后如下圖所示

在這里插入圖片描述

45)Options 保留默認配置 -》點擊OK

在這里插入圖片描述

46)在備份數據庫彈出框點擊OK

在這里插入圖片描述

事務日志備份還原

需要先做完整備份還原和差異備份還原后,再做事務日志還原

全備份還原

步驟同 24)~ 31),這里不做贅述。

差異備份還原

47)右擊數據庫 TEST01 -》選擇 Tasks -》選擇 Restore -》選擇 Database 。

在這里插入圖片描述

48)Source 選擇 Device -》點擊 ... -》在彈出的窗口中 點擊 Add 添加用來恢復的備份文件。

在這里插入圖片描述

49)選擇備份文件 -》點擊OK

在這里插入圖片描述

50)可看到備份文件已添加成功 -》點擊OK

在這里插入圖片描述

51)General 頁配置完成后如下圖所示

在這里插入圖片描述

52)Files 頁顯示如下圖

在這里插入圖片描述

53)在 Options 頁,注意Recovery state 選擇 “RESTORE WITH NORECOVERY” (默認選項) -》點擊OK

在這里插入圖片描述

54)在還原數據庫彈出框點擊確定

在這里插入圖片描述

此時,數據庫處於 Restoring 狀態,不可用,等待着下一步還原操作。

在這里插入圖片描述

事務日志還原

55)右擊數據庫 TEST01 -》選擇 Tasks -》選擇 Restore -》選擇 Database 。

在這里插入圖片描述

56)Source 選擇 Device -》點擊 ... -》在彈出的窗口中 點擊 Add 添加用來恢復的備份文件。

在這里插入圖片描述

57)選擇備份文件 -》點擊OK

在這里插入圖片描述

58)可看到備份文件已添加成功 -》點擊OK

在這里插入圖片描述

59)General 頁配置完成后如下圖所示

在這里插入圖片描述

60)在 Options 頁,注意Recovery state 選擇第一個選項 “RESTORE WITH NORECOVERY” (默認選項) -》點擊OK

在這里插入圖片描述

61)在還原數據庫彈出框點擊確定

在這里插入圖片描述

至此,數據庫 TEST01 還原完成!

驗證數據

在這里插入圖片描述

select * from dbo.class
select * from dbo.classbak
select * from dbo.classbak02

結果均如下:

在這里插入圖片描述

數據無誤!

補充:以上示例中,備份文件的路徑可選擇文章前面創建的備份設備。
   如 4)中,Destinations on disk 可選擇 Backup device 。


使用 SQL 備份與還原

使用SQL方式完整備份與還原

語法格式:

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

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

--備份數據庫
USE master
GO
BACKUP DATABASE <數據庫> TO disk='目錄'

--還原數據庫
USE master
GO
RESTORE DATABASE <數據庫> FROM disk='目錄'

使用示例:

--備份數據庫
USE master
GO
BACKUP DATABASE TEST01 TO studyDB_backup

--還原數據庫
USE master
GO
RESTORE DATABASE TEST01 FROM studyDB_backup

--備份數據庫
USE master
GO
BACKUP DATABASE TEST01 TO disk='F:\backup\test01_full.bak'

--還原數據庫
USE master
GO
RESTORE DATABASE TEST01 FROM disk='F:\backup\test01_full.bak'

使用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 <數據庫> TO disk='目錄' WITH DIFFERENTIAL

--數據庫還原
USE master
GO
RESTORE DATABASE <數據庫> FROM disk='目錄' WITH NORECOVERY  --NORECOVERY  表示還原未恢復
GO
...
GO
RESTORE DATABASE  <數據庫> FROM disk='目錄' WITH RECOVERY --RECOVERY  表示還原已恢復

使用示例:

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

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

--數據庫差異備份
USE master
GO
BACKUP DATABASE TEST01 TO disk='F:\backup\test01_diff.bak' WITH DIFFERENTIAL

--數據庫還原
USE master
GO
RESTORE DATABASE TEST01 FROM disk='F:\backup\test01_full.bak' WITH NORECOVERY 
GO
RESTORE DATABASE TEST01 FROM disk='F:\backup\test01_diff.bak' WITH RECOVERY

使用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 <數據庫> TO disk='目錄'

--恢復數據庫備份
USE master
GO
RESTORE DATABASE <數據庫> FROM disk='目錄' WITH NORECOVERY   --NORECOVERY  表示還原未恢復
GO
...
GO
RESTORE LOG <數據庫> FROM disk='目錄' WITH RECOVERY   --RECOVERY  表示還原已恢復

使用示例:

--備份事務日志
USE master
GO
BACKUP LOG TEST01 TO studyDB_backup

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

--備份事務日志
USE master
GO
BACKUP LOG TEST01 TO disk='F:\backup\test01_tran.trn' 

--恢復數據庫備份
USE master
GO
RESTORE DATABASE  TEST01 FROM disk='F:\backup\test01_full.bak' WITH REPLACE,FILE=1,NORECOVERY   --NORECOVERY  表示還原未恢復
GO
RESTORE DATABASE  TEST01 FROM disk='F:\backup\test01_diff.bak' WITH NORECOVERY   --NORECOVERY  表示還原未恢復
GO
RESTORE LOG  TEST01 FROM 'F:\backup\test01_tran.trn' WITH RECOVERY   --RECOVERY  表示還原已恢復

在這里插入圖片描述


參考鏈接:https://blog.csdn.net/gengkui9897/article/details/95186692


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM