翻譯|使用教程|編輯:鮑佳佳|2021-01-26 14:09:52.270|閱讀 472 次
概述:我們將更詳細地探討每種還原類型。因此,讓我們從基本類型開始-一個簡單的恢復模型和一個完整的恢復模型。上文我們講了簡單恢復;下面接著講解如何恢復數(shù)據(jù)庫文件和文件組。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
dbForge Studio for SQL Server為有效的探索、分析SQL Server數(shù)據(jù)庫中的大型數(shù)據(jù)集提供全面的解決方案,并設(shè)計各種報表以幫助作出合理的決策。
點擊下載dbForge Studio for SQL Server最新試用版
數(shù)據(jù)庫恢復類型
在本文討論數(shù)據(jù)還原過程時,讓我介紹三種主要的數(shù)據(jù)庫恢復類型:
我們將更詳細地探討每種還原類型。因此,讓我們從基本類型開始-一個簡單的恢復模型和一個完整的恢復模型。
上文我們講了簡單恢復;下面接著講解如何恢復數(shù)據(jù)庫文件和文件組。
恢復數(shù)據(jù)庫文件和文件組
除此之外,我們可以使用以下腳本還原特定的數(shù)據(jù)庫文件:
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設(shè)置為預設(shè)文件的事務(wù)日志備份的順序。
同樣,我們可以還原文件組并還原部分備份。要通過SSMS執(zhí)行此操作,請右鍵單擊“數(shù)據(jù)庫”,然后選擇“還原文件和文件組”選項:
圖。8. 在SSMS中還原文件和文件組
在“常規(guī)”選項卡上,我們選擇要還原的目標和還原源(部分備份的文件以及要還原的元素):
圖。9. SSMS中的“常規(guī)”選項卡設(shè)置
然后,在“選項”選項卡上,我們需要配置必要的設(shè)置:
圖。10. SSMS中的“選項”選項卡設(shè)置
數(shù)據(jù)庫本身具有相同的快捷菜單:
圖。11. SSMS中數(shù)據(jù)庫的“還原”上下文菜單
請注意,僅當數(shù)據(jù)庫處于NORECOVERY或STANDBY模式時,才可以還原事務(wù)日志備份。這就是為什么此選項在上面的屏幕截圖中不可用。
此外,還可以還原頁面。例如,下面的示例演示了如何還原具有以下標識符的頁面: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
如果您想了解更多有關(guān)該主題的信息,請閱讀有關(guān)恢復頁面的信息。
實施還原過程
既然我們已經(jīng)考慮了恢復的基礎(chǔ),那么讓我們繼續(xù)執(zhí)行該過程。
必須理解,旨在檢查備份的例行還原通常是在其他服務(wù)器上執(zhí)行的。數(shù)據(jù)庫位置和還原數(shù)據(jù)庫的位置是兩個不同的服務(wù)器。
因此,至關(guān)重要的是命名備份文件,以便它清楚地定義備份,它屬于哪個數(shù)據(jù)庫以及還原的順序。后者意味著我們需要定義最新的完整備份,最后的差異備份和事務(wù)日志備份鏈。
在當前文章探討了恢復過程及其自動化的實施。但是,它沒有考慮上面闡明的所有要點。特別是,它沒有探討完整的恢復過程。因此,我們將需要改進方法。
首先,除非在之前創(chuàng)建了該模式,否則我們將在相應(yīng)的數(shù)據(jù)庫中創(chuàng)建srv模式。然后,我們創(chuàng)建[srv]。[RestoreSettings]表以寫入要還原的數(shù)據(jù)庫:
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
哪里:
現(xiàn)在,使用以下腳本將JobEmplDB數(shù)據(jù)庫添加到創(chuàng)建的[srv]。[BackupSettings]表中:
INSERT INTO [srv].[RestoreSettings] ([DBName] ,[FullPathRestore] ,[DiffPathRestore] , [LogPathRestore]) SELECT N'JobEmplDB', '\\Shared\Backup\Full\', '\\Shared\Backup\Diff\', '\\Shared\Backup\Log\'; GO
接下來,我們創(chuàng)建[srv]。[RestoreSettingsDetail]表以獲取數(shù)據(jù)庫還原的詳細設(shè)置:
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
在這里,讓我澄清一下:
請注意,必須在還原過程中為每個數(shù)據(jù)庫文件設(shè)置SourcePathRestore和TargetPathRestore目標的位置。
現(xiàn)在,我們使用以下腳本將JobEmplDB數(shù)據(jù)庫文件的詳細還原數(shù)據(jù)添加到[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實例啟用參數(shù)сonfigurations,以執(zhí)行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]存儲過程已被完全更改,因此它現(xiàn)在可以定義哪些備份以及如何還原。在備份名稱格式如下的情況下:
<數(shù)據(jù)庫名稱> _ <備份類型(完整,差異,日志)> _ backup_YYYY_MM_DD_HH_MM_SS。<bak或trn>
[srv]。[RunFullRestoreDB]存儲過程的完整調(diào)用如下:
EXEC [srv].[RunFullRestoreDB] @OnlyDBName=NULL, @IsNameAddRestore=1;
在這里,@OnlyDBName參數(shù)定義了要還原的數(shù)據(jù)庫,而IsNameAddRestore參數(shù)設(shè)置了在已還原數(shù)據(jù)庫的末尾添加_Restore行及其文件名的必要性。
的定義[SRV] [RunFullRestoreDB]存儲過程表明,我們首先得到所有從[SRV]相關(guān)數(shù)據(jù)庫的必要信息。[RestoreSettings]和[SRV] [RestoreSettingsDetail]表。
之后,我們將讀取每個數(shù)據(jù)庫的完整,差異和事務(wù)日志備份的完整路徑。對于每個路徑,我們讀取其中的文件,而無需引用子目錄。
最后,我們根據(jù)文件名格式,數(shù)據(jù)庫所屬和備份類型在這些文件中定義必要的文件。還原腳本是基于檢索到的數(shù)據(jù)生成的。
[srv]。[RunFullRestoreDB]存儲過程的一般原理如下:
如果在最新的差異備份創(chuàng)建之后沒有創(chuàng)建事務(wù)日志,則還原過程將以差異備份還原結(jié)束。
如果不存在差異備份,則還原過程將從完整備份開始,并以不早于最新完整備份創(chuàng)建的所有事務(wù)日志備份的順序進行。
如果只有完整備份可用,數(shù)據(jù)庫將嚴格從中還原。如果沒有完整備份,則數(shù)據(jù)庫不會包含在還原過程中。
數(shù)據(jù)庫還原僅涉及名稱與以下格式匹配的文件:
<數(shù)據(jù)庫名稱> _ <備份類型(完整,差異,日志)> _備份_YYYY_MM_DD_HH_MM_SS。<bak或trn>
這些文件必須與備份類型和數(shù)據(jù)庫名稱匹配。當然,最好為每個數(shù)據(jù)庫創(chuàng)建一個單獨的子目錄以提高生產(chǎn)力。因此,代替以下路徑:
\\ Shared \ Backup \ Full \
\\ Shared \ Backup \ Diff \
\\ Shared \ Backup \ Log \
您最好使用:
\\ Shared \ Backup \ Full \ JobEmplDB \
\\ Shared \ Backup \ Diff \ JobEmplDB \
\\ Shared \ Backup \ Log \ JobEmplDB \
綜上所述,我們從主要備份類型檢查了還原過程的實現(xiàn):
您可以根據(jù)特定的時間表通過代理任務(wù)或任何第三方方法和工具來調(diào)用這些存儲過程。
還可以在[inf]。[RunAsyncExecute]存儲過程的幫助下,通過動態(tài)創(chuàng)建代理任務(wù)來使恢復并行 化。此過程定義了四個參數(shù):
為了加快還原過程,可以利用dbForge Studio for SQL Server,它提供了一個有用的dbForge Restore Wizard,并允許您使用功能強大的SQL備份工具來保護數(shù)據(jù)庫以防數(shù)據(jù)丟失。
結(jié)論
本文介紹了SQL Server數(shù)據(jù)庫還原過程的基本基礎(chǔ),并演示了如何通過考慮所有主要備份類型的SSMS和T-SQL腳本來實現(xiàn)數(shù)據(jù)庫備份的還原。至于本系列的下一篇文章,您將學習如何通過全面的數(shù)據(jù)庫管理和管理工具dbForge Studio for SQL Server來執(zhí)行SQL Server數(shù)據(jù)庫備份和還原的過程。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: