翻譯|使用教程|編輯:鮑佳佳|2021-01-26 14:09:52.270|閱讀 472 次
概述:我們將更詳細地探討每種還原類型。因此,讓我們從基本類型開始-一個簡單的恢復模型和一個完整的恢復模型。上文我們講了簡單恢復;下面接著講解如何恢復數據庫文件和文件組。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
dbForge Studio for SQL Server為有效的探索、分析SQL Server數據庫中的大型數據集提供全面的解決方案,并設計各種報表以幫助作出合理的決策。
點擊下載dbForge Studio for SQL Server最新試用版
數據庫恢復類型
在本文討論數據還原過程時,讓我介紹三種主要的數據庫恢復類型:
我們將更詳細地探討每種還原類型。因此,讓我們從基本類型開始-一個簡單的恢復模型和一個完整的恢復模型。
上文我們講了簡單恢復;下面接著講解如何恢復數據庫文件和文件組。
恢復數據庫文件和文件組
除此之外,我們可以使用以下腳本還原特定的數據庫文件:
RESTORE DATABASE [JobEmplDB] FILE = N'JobEmplDB' FROM DISK = N'\\Shared\Backup\Full\JobEmplDB_2020_07_19_17_27_01.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10; GO
在這里,我們還原JobEmplDB文件。還原它時,我們可以將WITH NORECOVERY設置為預設文件的事務日志備份的順序。
同樣,我們可以還原文件組并還原部分備份。要通過SSMS執行此操作,請右鍵單擊“數據庫”,然后選擇“還原文件和文件組”選項:
圖。8. 在SSMS中還原文件和文件組
在“常規”選項卡上,我們選擇要還原的目標和還原源(部分備份的文件以及要還原的元素):
圖。9. SSMS中的“常規”選項卡設置
然后,在“選項”選項卡上,我們需要配置必要的設置:
圖。10. SSMS中的“選項”選項卡設置
數據庫本身具有相同的快捷菜單:
圖。11. SSMS中數據庫的“還原”上下文菜單
請注意,僅當數據庫處于NORECOVERY或STANDBY模式時,才可以還原事務日志備份。這就是為什么此選項在上面的屏幕截圖中不可用。
此外,還可以還原頁面。例如,下面的示例演示了如何還原具有以下標識符的頁面:1:57、1:202、1:916和1:1016:
RESTORE DATABASE [JobEmplDB] PAGE='1:57, 1:202, 1:916, 1:1016' FROM DISK = '\\Shared\Backup\Full\JobEmplDB_Full_backup_2020_07_19_14_04_25.bak' WITH NORECOVERY; RESTORE LOG [JobEmplDB] FROM DISK = '\\Shared\Backup\Log\JobEmplDB_Log_backup_2020_07_19_17_04_56.trn' WITH NORECOVERY; RESTORE LOG [JobEmplDB] FROM DISK = '\\Shared\Backup\Log\JobEmplDB_Log_backup_2020_07_19_17_04_56.trn' WITH NORECOVERY; BACKUP LOG [JobEmplDB] TO DISK = '\\Shared\Backup\Log\JobEmplDB_Log_backup_2020_07_19_17_04_58.trn'; RESTORE LOG [JobEmplDB] FROM DISK = '\\Shared\Backup\Log\JobEmplDB_Log_backup_2020_07_19_17_04_58.trn' WITH RECOVERY; GO
如果您想了解更多有關該主題的信息,請閱讀有關恢復頁面的信息。
實施還原過程
既然我們已經考慮了恢復的基礎,那么讓我們繼續執行該過程。
必須理解,旨在檢查備份的例行還原通常是在其他服務器上執行的。數據庫位置和還原數據庫的位置是兩個不同的服務器。
因此,至關重要的是命名備份文件,以便它清楚地定義備份,它屬于哪個數據庫以及還原的順序。后者意味著我們需要定義最新的完整備份,最后的差異備份和事務日志備份鏈。
在當前文章探討了恢復過程及其自動化的實施。但是,它沒有考慮上面闡明的所有要點。特別是,它沒有探討完整的恢復過程。因此,我們將需要改進方法。
首先,除非在之前創建了該模式,否則我們將在相應的數據庫中創建srv模式。然后,我們創建[srv]。[RestoreSettings]表以寫入要還原的數據庫:
CREATE TABLE [srv].[RestoreSettings]( [DBName] [nvarchar](255) NOT NULL, [FullPathRestore] [nvarchar](255) NOT NULL, [DiffPathRestore] [nvarchar](255) NOT NULL, [LogPathRestore] [nvarchar](255) NOT NULL, [InsertUTCDate] [datetime] NOT NULL, CONSTRAINT [PK_RestoreSettings_1] PRIMARY KEY CLUSTERED ( [DBName] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 95, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [srv].[RestoreSettings] ADD CONSTRAINT [DF_RestoreSettings_InsertUTCDate] DEFAULT (getutcdate()) FOR [InsertUTCDate] GO
哪里:
現在,使用以下腳本將JobEmplDB數據庫添加到創建的[srv]。[BackupSettings]表中:
INSERT INTO [srv].[RestoreSettings] ([DBName] ,[FullPathRestore] ,[DiffPathRestore] , [LogPathRestore]) SELECT N'JobEmplDB', '\\Shared\Backup\Full\', '\\Shared\Backup\Diff\', '\\Shared\Backup\Log\'; GO
接下來,我們創建[srv]。[RestoreSettingsDetail]表以獲取數據庫還原的詳細設置:
CREATE TABLE [srv].[RestoreSettingsDetail]( [Row_GUID] [uniqueidentifier] NOT NULL, [DBName] [nvarchar](255) NOT NULL, [SourcePathRestore] [nvarchar](255) NOT NULL, [TargetPathRestore] [nvarchar](255) NOT NULL, [Ext] [nvarchar](255) NOT NULL, [InsertUTCDate] [datetime] NOT NULL, CONSTRAINT [PK_RestoreSettingsDetail_1] PRIMARY KEY CLUSTERED ( [Row_GUID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 95, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO
ALTER TABLE [srv].[RestoreSettingsDetail] ADD CONSTRAINT [DF_RestoreSettingsDetail_Row_GUID] DEFAULT (newid()) FOR [Row_GUID] GO
ALTER TABLE [srv].[RestoreSettingsDetail] ADD CONSTRAINT [DF_RestoreSettingsDetail_InsertUTCDate] DEFAULT (getutcdate()) FOR [InsertUTCDate] GO
在這里,讓我澄清一下:
請注意,必須在還原過程中為每個數據庫文件設置SourcePathRestore和TargetPathRestore目標的位置。
現在,我們使用以下腳本將JobEmplDB數據庫文件的詳細還原數據添加到[srv]。[BackupSettingsDetail]表中:
INSERT INTO [srv].[RestoreSettingsDetail] ([DBName] ,[SourcePathRestore] ,[TargetPathRestore] ,[Ext]) SELECT N'JobEmplDB', N'JobEmplDB', N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB2', N'mdf' UNION ALL SELECT N'JobEmplDB', N'JobEmplDB_log', N'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\JobEmplDB2_log', N'ldf'; GO
之后,我們需要為MS SQL Server實例啟用參數сonfigurations,以執行xp_cmdshell存儲過程。為此,我們將使用以下腳本:
-- To allow advanced options to be changed. EXECUTE sp_configure 'show advanced options', 1; GO -- To update the currently configured value for advanced options. RECONFIGURE; GO -- To enable the feature. EXECUTE sp_configure 'xp_cmdshell', 1; GO -- To update the currently configured value for this feature. RECONFIGURE; GO
這樣,[srv]。[RunFullRestoreDB]存儲過程已被完全更改,因此它現在可以定義哪些備份以及如何還原。在備份名稱格式如下的情況下:
<數據庫名稱> _ <備份類型(完整,差異,日志)> _ backup_YYYY_MM_DD_HH_MM_SS。<bak或trn>
[srv]。[RunFullRestoreDB]存儲過程的完整調用如下:
EXEC [srv].[RunFullRestoreDB] @OnlyDBName=NULL, @IsNameAddRestore=1;
在這里,@OnlyDBName參數定義了要還原的數據庫,而IsNameAddRestore參數設置了在已還原數據庫的末尾添加_Restore行及其文件名的必要性。
的定義[SRV] [RunFullRestoreDB]存儲過程表明,我們首先得到所有從[SRV]相關數據庫的必要信息。[RestoreSettings]和[SRV] [RestoreSettingsDetail]表。
之后,我們將讀取每個數據庫的完整,差異和事務日志備份的完整路徑。對于每個路徑,我們讀取其中的文件,而無需引用子目錄。
最后,我們根據文件名格式,數據庫所屬和備份類型在這些文件中定義必要的文件。還原腳本是基于檢索到的數據生成的。
[srv]。[RunFullRestoreDB]存儲過程的一般原理如下:
如果在最新的差異備份創建之后沒有創建事務日志,則還原過程將以差異備份還原結束。
如果不存在差異備份,則還原過程將從完整備份開始,并以不早于最新完整備份創建的所有事務日志備份的順序進行。
如果只有完整備份可用,數據庫將嚴格從中還原。如果沒有完整備份,則數據庫不會包含在還原過程中。
數據庫還原僅涉及名稱與以下格式匹配的文件:
<數據庫名稱> _ <備份類型(完整,差異,日志)> _備份_YYYY_MM_DD_HH_MM_SS。<bak或trn>
這些文件必須與備份類型和數據庫名稱匹配。當然,最好為每個數據庫創建一個單獨的子目錄以提高生產力。因此,代替以下路徑:
\\ Shared \ Backup \ Full \
\\ Shared \ Backup \ Diff \
\\ Shared \ Backup \ Log \
您最好使用:
\\ Shared \ Backup \ Full \ JobEmplDB \
\\ Shared \ Backup \ Diff \ JobEmplDB \
\\ Shared \ Backup \ Log \ JobEmplDB \
綜上所述,我們從主要備份類型檢查了還原過程的實現:
您可以根據特定的時間表通過代理任務或任何第三方方法和工具來調用這些存儲過程。
還可以在[inf]。[RunAsyncExecute]存儲過程的幫助下,通過動態創建代理任務來使恢復并行 化。此過程定義了四個參數:
為了加快還原過程,可以利用dbForge Studio for SQL Server,它提供了一個有用的dbForge Restore Wizard,并允許您使用功能強大的SQL備份工具來保護數據庫以防數據丟失。
結論
本文介紹了SQL Server數據庫還原過程的基本基礎,并演示了如何通過考慮所有主要備份類型的SSMS和T-SQL腳本來實現數據庫備份的還原。至于本系列的下一篇文章,您將學習如何通過全面的數據庫管理和管理工具dbForge Studio for SQL Server來執行SQL Server數據庫備份和還原的過程。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: