轉帖|使用教程|編輯:鮑佳佳|2021-01-18 14:21:35.070|閱讀 453 次
概述:在本文討論數據還原過程時,介紹三種主要的數據庫恢復類型:數據庫完全恢復,數據庫文件恢復建議,數據庫界面恢復。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
dbForge Studio for SQL Server為有效的探索、分析SQL Server數據庫中的大型數據集提供全面的解決方案,并設計各種報表以幫助作出合理的決策。
點擊下載dbForge Studio for SQL Server最新試用版
數據庫恢復類型
在本文討論數據還原過程時,讓我介紹三種主要的數據庫恢復類型:
我建議我們更詳細地探討每種還原類型。因此,讓我們從基本類型開始-一個簡單的恢復模型和一個完整的恢復模型。
簡單恢復模型
您可以使用以下腳本在簡單恢復模型下從完全備份執行數據庫恢復:
USE [master] RESTORE DATABASE [JobEmplDB] FROM DISK = N'\\Shared\Backup\Full\JobEmplDB_Full_backup_2020_07_19_13_20_55.bak' WITH FILE = 1, MOVE N'JobEmplDB' TO N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB.mdf', MOVE N'JobEmplDB_log' TO N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB_log.ldf', NOUNLOAD, REPLACE, STATS = 5; GO
因此,我們通過覆蓋現有文件和JobEmplDB數據庫并將文件傳輸到D:\ Program Files \ Microsoft SQL Server \ MSSQL15.MSSQLSERVER \ MSSQLSERVER \ DATA,從JobEmplDB_Full_backup_2020_07_19_14_21_57.bak備份中還原JobEmplDB數據庫。
使用SSMS還原SQL Server數據庫
或者,您可以在SSMS界面中執行相同的還原。為此,右鍵單擊數據庫,然后選擇“還原數據庫”選項:
圖。1.在SSMS中選擇數據庫還原
接下來,在“常規”選項卡上,選擇備份文件的路徑以及要將其還原到的目標位置(還有創建新數據庫的選項):
圖。2. SSMS中的常規選項卡設置
請注意,“還原計劃”部分提供了有關備份文件的詳細信息。除其他外,它顯示文件中存在的內容和備份類型。
之后,在“文件”選項卡上,指定將還原的數據庫文件重新定位到的位置:
圖。3. SSMS中的“文件”選項卡設置
在“選項”選項卡上,啟用“覆蓋現有數據庫”選項:
圖。4. SSMS中的“選項”選項卡設置
完全恢復模式
對于完整恢復模型,您將需要執行以下步驟。
首先,從完全備份還原數據庫,然后將數據庫切換到RESTORE WITH NORECOVERY模式:
圖。5.在完全恢復模式下從完全備份還原數據庫
簡單恢復模型下的數據恢復腳本如下所示:
USE[master] RESTORE DATABASE[JobEmplDB] FROM DISK = N '\\Shared\Backup\Full\JobEmplDB_Full_backup_2020_07_19_13_20_55.bak' WITH FILE = 1, MOVE N 'JobEmplDB' TO N 'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB.mdf', MOVE N 'JobEmplDB_log' TO N 'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB_log.ldf', NORECOVERY, NOUNLOAD, REPLACE, STATS = 5; GO
其次,還原最后一個差異備份,并將數據庫切換到RESTORE WITH NORECOVERY模式:
USE [master] RESTORE DATABASE [JobEmplDB] FROM DISK = N'\\Shared\Backup\Full\JobEmplDB_Full_backup_2020_07_19_13_20_55.bak' WITH FILE = 1, MOVE N'JobEmplDB' TO N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB.mdf', MOVE N'JobEmplDB_log' TO N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB_log.ldf', NORECOVERY, NOUNLOAD, REPLACE, STATS = 5; RESTORE DATABASE [JobEmplDB] FROM DISK = ‘N\\Shared\Backup\Diff\JobEmplDB_Diff_backup_2020_07_19_13_21_29.bak' WITH FILE = 1, MOVE N'JobEmplDB' TO N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB.mdf', MOVE N'JobEmplDB_log' TO N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB_log.ldf', NORECOVERY, NOUNLOAD, REPLACE, STATS = 5; GO
僅當差異備份與相應的完整備份文件位于同一文件中時,該可視界面才允許還原差異備份:
圖。6. SSMS中的差異備份還原
在我們的例子中,我們得到以下查詢:
USE [master] RESTORE DATABASE [JobEmplDB] FROM DISK = N'\\Shared\Backup\Full\JobEmplDB_Full_backup_2020_07_19_14_21_57.bak' WITH FILE = 3, MOVE N'JobEmplDB' TO N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB.mdf', MOVE N'JobEmplDB_log' TO N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB_log.ldf', NORECOVERY, NOUNLOAD, REPLACE, STATS = 5; RESTORE DATABASE [JobEmplDB] FROM DISK = N'\\Shared\Backup\Full\JobEmplDB_Full_backup_2020_07_19_14_21_57.bak' WITH FILE = 5, NORECOVERY, NOUNLOAD, REPLACE, STATS = 5; GO
即,JobEmplDB_Full_backup_2020_07_19_14_21_57.bak文件包含有關3的完全備份RD位置(FILE = 3)和差異備份是對5個位置(FILE = 5)。
第三,一個接一個地還原完成最后一個差異備份之后創建的所有事務日志:
RESTORE LOG [JobEmplDB] FROM DISK = N'\\Shared\Backup\Log\JobEmplDB_Log_backup_2020_07_19_17_04_54.trn' WITH NORECOVERY, NOUNLOAD, REPLACE, STATS = 5; GO
RESTORE LOG [JobEmplDB] FROM DISK = N'\\Shared\Backup\Log\JobEmplDB_Log_backup_2020_07_19_17_04_56.trn' WITH RECOVERY, NOUNLOAD, REPLACE, STATS = 5; GO
重要的是,僅當此備份位于包含完整備份的同一文件中時,圖形界面才允許我們從事務日志備份中還原數據庫:
圖。7.事務日志備份還原
在我們的例子中,我們得到以下查詢:
USE [master] RESTORE DATABASE [JobEmplDB] FROM DISK = N'\\Shared\Backup\Full\JobEmplDB_Full_backup_2020_07_19_14_04_25.bak' WITH FILE = 3, MOVE N'JobEmplDB' TO N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB.mdf', MOVE N'JobEmplDB_log' TO N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB_log.ldf', NORECOVERY, NOUNLOAD, REPLACE, STATS = 5; RESTORE LOG [JobEmplDB] FROM DISK = N'\\Shared\Backup\Full\JobEmplDB_Full_backup_2020_07_19_14_04_25.bak' WITH FILE = 4, NOUNLOAD, STATS = 5; GO
最后,我們獲得以下用于完全還原JobEmplDB的最終腳本:
USE [master] --Restoring full backup RESTORE DATABASE [JobEmplDB] FROM DISK = N'\\Shared\Backup\Full\JobEmplDB_Full_backup_2020_07_19_14_04_25.bak' WITH FILE = 1, MOVE N'JobEmplDB' TO N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB.mdf', MOVE N'JobEmplDB_log' TO N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB_log.ldf', NORECOVERY, NOUNLOAD, REPLACE, STATS = 5; GO --restoring the last differential backup for the respective full backup RESTORE DATABASE [JobEmplDB] FROM DISK = N'\\Shared\Backup\Diff\JobEmplDB_Diff_backup_2020_07_19_14_04_44.bak' WITH FILE = 1, MOVE N'JobEmplDB' TO N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB.mdf', MOVE N'JobEmplDB_log' TO N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB_log.ldf', NORECOVERY, NOUNLOAD, REPLACE, STATS = 5; GO -- restoring the sequence of transaction log backups after the last differential backup creation RESTORE LOG [JobEmplDB] FROM DISK = N'\\Shared\Backup\Log\JobEmplDB_Log_backup_2020_07_19_17_04_54.trn' WITH NORECOVERY, NOUNLOAD, REPLACE, STATS = 5; GO RESTORE LOG [JobEmplDB] FROM DISK = N'\\Shared\Backup\Log\JobEmplDB_Log_backup_2020_07_19_17_04_56.trn' WITH RECOVERY, NOUNLOAD, REPLACE, STATS = 5; GO
今天的內容就是這些,下篇文章我們將對如何恢復數據庫文件和文件組進行詳細講解。
點擊下載dbForge Studio for SQL Server,并通過30天免費試用版自行檢查此功能!現dbForge Studio SQL Sever直降3000,在線訂購正版授權最低只要1710元!
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: