SQL 备份与恢复之还原数据库
一、還原用戶數據庫
1、“還原數據庫”基本操作
(1)目標數據庫
在該列表中輸入要還原的數據庫。您可以輸入新的數據庫,也可以從下拉列表中選擇現有的數據庫。該列表包含了服務器上除系統數據庫 master 和 tempdb 之外的所有數據庫。
注意: 若要還原帶有密碼保護的備份,必須使用 RESTORE 語句。 ?
(2)目標時間點
將數據庫還原到備份的最近可用時間,或還原到特定時間點。默認為“最近狀態”。若要指定特定的時間點,請單擊“瀏覽”按鈕。
日期和時間按客戶端的區域設置指定。
(3)源
“還原的源”面板中的選項可標識數據庫的備份集的位置以及要還原的備份集。
源數據庫
從該列表框中選擇要還原的數據庫。此列表僅包含已根據 msdb 備份歷史記錄進行備份的數據庫。
源設備
選擇包含要恢復的一個或多個備份的邏輯或物理備份設備(磁帶或文件)。
若要選擇一個或多個邏輯或物理備份設備,請單擊瀏覽按鈕,這將打開“指定備份”對話框。在此,最多可以選擇屬于一個介質集的 64 個設備。磁帶機必須與運行 SQL Server 實例的計算機進行物理連接。備份文件可以位于本地或遠程磁帶設備上。
退出“指定備份”對話框時,選擇的設備將在“源設備”列表中顯示為只讀值。
(4)備份集
“選擇用于還原的備份集”網格中顯示可用于指定位置的備份集。每個備份集(單個備份操作的結果)分布在介質集的所有設備上。默認情況下,會建議制定一個恢復計劃,以實現基于所選必需備份集執行的還原操作目標。SQL Server Management Studio 使用 msdb 中的備份歷史記錄來標識還原數據庫所需的備份并創建還原計劃。例如,為了進行數據庫還原,還原計劃將選擇最近的完整數據庫備份,然后選擇最近的后續差異數據庫備份(如果有)。在完整恢復模式下,還原計劃隨后將選擇所有后續日志備份。
若要覆蓋建議的恢復計劃,可以更改網格中的選擇。如果備份所依賴的備份已取消選擇,將自動取消對它們的選擇。
2、還原選項
(1)覆蓋現有數據庫
還原一般會防止意外使用一個數據庫覆蓋另一個數據庫。如果 RESTORE 語句中指定的數據庫已存在于當前服務器上,并且指定的數據庫名稱與備份集中記錄的數據庫名稱不同,則不還原該數據庫。這是一項重要的安全保護措施。
注意:應盡可能避免使用 REPLACE,而且在使用該選項之前必須仔細考慮。
使用 REPLACE 選項后,就會忽略還原時通常執行的幾項重要安全檢查。忽略的檢查如下:
還原時使用其他數據庫的備份覆蓋現有數據庫。
使用 REPLACE 選項后,即使指定的數據庫名稱與備份集中記錄的數據庫名稱不同,還原也允許您使用備份集中任何一個數據庫覆蓋現有數據庫。這會導致一個數據庫意外覆蓋另一個數據庫。
在沒有獲取結尾日志備份并也沒有使用 STOPAT 選項的情況下,使用完整恢復模式或大容量日志恢復模式對數據庫進行還原。
使用 REPLACE 選項后,由于沒有備份最近寫入的日志,您會丟失提交的作業。
覆蓋現有文件。
例如,可能會錯誤地覆蓋錯誤類型的文件,如 .xls 文件或非聯機狀態的其他數據庫正在使用的文件等。如果覆蓋現有文件,則即使所還原的數據庫是完整的,也有可能丟失某些數據。
(2) 保留復制設置
將已發布的數據庫還原到創建該數據庫的服務器之外的服務器時,保留復制設置。此選項只適用于在創建備份時對數據庫進行了復制的情況。選擇此選項等效于在 RESTORE 語句中使用 KEEP_REPLICATION 選項。
僅在選擇“回滾未提交的事務,使數據庫處于可以使用的狀態”選項(在本表的后面部分中說明)時,此選項才可用,其功能等效于使用 RECOVERY 選項還原備份。
(3)還原每個備份之前進行提示
指定在還原了每個備份之后,將顯示“繼續還原”對話框,詢問您是否要繼續還原順序。該對話框將顯示下一個介質集(如果已知)的名稱以及下一個備份集的名稱和說明。
此選項允許您在還原了任何備份后暫停還原順序。如果必須為不同介質集更換磁帶,例如在服務器僅具有一個磁帶設備時,此選項非常有用。準備就緒后,請單擊“確定”以繼續。
可以通過單擊“否”中斷還原順序。這樣可以使數據庫保持還原狀態。在日后方便的時候,可以通過恢復執行“繼續還原”對話框中所列出的下一個備份,繼續該還原順序。還原下一個備份的過程取決于其是否包含數據或事務日志,如下所示:
如果下一個備份是完整備份或差異備份,請再次使用“還原數據庫”任務。
如果下一個備份是文件備份,請使用“還原文件和文件組”任務。
如果下一個備份是日志備份,請使用“還原事務日志”任務。
(4)限制訪問還原的數據庫
使還原的數據庫僅供 db_owner、dbcreator 或 sysadmin 的成員使用。選擇此選項等效于在 RESTORE 語句中使用 RESTRICTED_USER 選項。
(5)將數據庫文件還原為
顯示一個網格,列出數據庫的每個數據文件或日志文件的原始完整路徑和每個文件的還原目標。可以通過為文件指定新的還原目標,移動您要還原的數據庫。
3、注意事項
將 SQL Server 2005 或 SQL Server 2000 數據庫還原到 SQL Server 2008 R2 后,該數據庫將立即變為可用,然后自動升級。
如果數據庫具有全文索引,升級過程將導入、重置或重新生成它們,具體取決于“全文升級選項”服務器屬性的設置。如果升級選項設置為“導入”或“重新生成”,則全文索引將在升級過程中不可用。導入可能需要數小時,而重新生成所需的時間最多時可能十倍于此,具體取決于要編制索引的數據量。另請注意,如果將升級選項設置為“導入”,并且全文目錄不可用,則會重新生成關聯的全文索引。
4、“還原文件和文件組”基本操作
可以指定數據庫文件或文件組還原操作。
二、恢復系統數據庫
SQL Server 維護一組系統級數據庫(稱為“系統數據庫”),這些數據庫對于服務器實例的運行至關重要。
1、系統數據庫的成員
(1)?master?記錄 SQL Server 系統的所有系統級信息的數據庫。若要還原任何數據庫,必須運行 SQL Server 實例。只有在 master 數據庫可供訪問且至少部分可用時,才能啟動 SQL Server 實例。
可以將 master 數據庫的恢復模式設置為 FULL 或 BULK_LOGGED。但是,master 數據庫不支持 BACKUP LOG。
(2)?msdb?是SQL Server 代理用來安排警報和作業以及記錄操作員信息的數據庫。msdb 還包含歷史記錄表,例如備份和還原歷史記錄表。
如果要在恢復用戶數據庫時使用 msdb 數據庫中的備份與還原歷史記錄信息,則建議對 msdb 數據庫使用完整恢復模式。此外,請考慮將 msdb 事務日志放在容錯存儲設備上。
(3)model?保存在 SQL Server 實例上為所有數據庫創建的模板。
新創建的用戶數據庫與 model 數據庫使用相同的恢復模式。若希望新數據庫使用簡單恢復模式,請將 model 的恢復模式更改為 SIMPLE。
最佳做法: 推薦您根據需要只創建 model 的完整數據庫備份。由于 model 小且很少更改,因此無需備份日志。
(4)tempdb?用于保存臨時或中間結果集的工作空間。服務器實例關閉時,將永久刪除 tempdb 中的所有數據。
需要使用簡單恢復模式,以便始終自動回收 tempdb 日志空間。不能備份 tempdb 數據庫。每次啟動 SQL Server 實例時都會重新創建此數據庫。
(5)?Resource?包含 Microsoft SQL Server 2005 或更高版本附帶的所有系統對象副本的只讀數據庫。這是一個隱藏數據庫,位于 mssqlsystemresource.mdf 文件中,該文件僅包含代碼。因此,SQL Server 不能備份 Resource 數據庫。
恢復模式無關緊要。SQL Server 備份不能備份 Resource 數據庫。
(6)如果有任何數據庫在服務器實例上使用了復制,則還會有?distribution?系統數據庫。 此數據庫存儲元數據、各種復制的歷史記錄數據以及用于事務復制的事務。
2、還原 master 數據庫
可以通過下列兩種方式之一將該數據庫返回到可用狀態:
(1)從當前數據庫備份還原 master。
如果可以啟動服務器實例,則應能夠從完整數據庫備份還原 master。只能從對 SQL Server 2008 實例創建的備份中還原 master 數據庫。
如果創建數據庫備份后更改了 master 數據庫,則那些更改在還原備份時將丟失。若要恢復這些更改,必須執行可以恢復已丟失更改的語句。例如,如果自執行備份后創建了一些 SQL Server 登錄名,則這些登錄在還原 master 數據庫后會丟失。必須使用 SQL Server Management Studio 或創建登錄名時使用的原始腳本,重新創建這些登錄名。
重要提示:如果有些數據庫已不存在,但在還原的 master 數據庫備份中引用了那些數據庫,則 SQL Server 可能會由于找不到那些數據庫而在啟動時報告錯誤。還原備份后應刪除那些數據庫。
還原 master 數據庫后,SQL Server 實例將自動停止。如果需要進一步修復并希望防止多重連接到服務器,應以單用戶模式啟動服務器。否則,服務器會以正常方式重新啟動。如果決定以單用戶模式重新啟動服務器,應首先停止所有 SQL Server 服務(服務器實例本身除外),并停止所有 SQL Server 實用工具(如 SQL Server 代理)。停止服務和實用工具可以防止它們嘗試訪問服務器實例。
(2)完全重新生成 master。
如果由于 master 嚴重損壞而無法啟動 SQL Server,則必須重新生成 master。接下來,應該還原最新的 master 完整數據庫備份,因為重新生成數據庫將導致所有數據丟失。
重要提示:重新生成 master 將重新生成所有系統數據庫。重新生成 master、model、msdb 和 tempdb 系統數據庫時,將刪除這些數據庫,然后在其原位置重新創建它們。如果在重新生成語句中指定了新排序規則,則將使用該排序規則設置創建系統數據庫。用戶對這些數據庫所做的所有修改都會丟失。例如,您在 master 數據庫中的用戶定義對象、msdb 中的預定作業或 model 數據庫中對默認數據庫設置的更改都會丟失。
將 SQL Server 2008 安裝介質插入到磁盤驅動器中,或者在本地服務器上,從命令提示符處將目錄更改為 setup.exe 文件的位置。在服務器上的默認位置為 C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release。
在命令提示符窗口中,輸入以下命令。方括號用來指示可選參數。不要輸入括號。在使用 Windows Vista 操作系統且啟用了用戶帳戶控制 (UAC) 時,運行安裝程序需要提升的特權。必須以管理員身份運行命令提示符。
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ] [ /SQLCOLLATION=CollationName]
在安裝程序完成系統數據庫重新生成后,它將返回到命令提示符,而且不顯示任何消息。請檢查 Summary.txt 日志文件以驗證重新生成過程是否成功完成。此文件位于 C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Logs。
重新生成數據庫后,您可能需要還原 master、model 和 msdb 數據庫的最新完整備份。有關詳細信息,請參閱備份和還原系統數據庫的注意事項。
重要提示: 如果更改了服務器排序規則,請不要還原系統數據庫。否則,將使新排序規則替換為以前的排序規則設置。
如果沒有備份或者還原的備份不是最新的,請重新創建所有缺失的條目。例如,重新創建用戶數據庫、備份設備、SQL Server 登錄名、端點等缺少的所有條目。重新創建這些條目的最佳方法是運行創建它們的原始腳本。
3、還原 model 數據庫或 msdb 數據庫
還原 model 或 msdb 數據庫與對用戶數據庫執行完整的數據庫還原相同。在下列情況下,需要從備份中還原 model 數據庫或 msdb 數據庫:
重新生成了 master 數據庫。
model 數據庫或 msdb 數據庫已損壞(例如由于媒體故障)。
修改了 model 數據庫。在這種情況下,重新生成 master 數據庫時必須從備份還原 model 數據庫,因為重新生成主控實用工具將刪除并重新創建 model 數據庫。
重要提示:只能從在服務器實例當前運行的 SQL Server 版本上創建的備份中還原系統數據庫。例如,若要還原在 SQL Server 2005 SP1 上運行的服務器實例上的系統數據庫,則必須使用在服務器實例升級到 SQL Server 2005 SP1 之后所創建的數據庫備份。
如果 msdb 包含系統使用的計劃或其他數據,則必須在重新生成 master 時從備份還原 msdb,因為實用工具會刪除并重新創建 msdb。這將導致丟失所有計劃信息以及備份和還原歷史記錄。如果 msdb 數據庫沒有還原并且無法訪問,則 SQL Server 代理將無法訪問或啟動任何以前安排的任務。因此,如果 msdb 包含系統使用的計劃或其他數據,則必須在重新生成 master 時還原 msdb。
不能還原用戶正在訪問的數據庫。如果 SQL Server 代理正在運行,它可以訪問 msdb 數據庫。因此,在還原 msdb 之前,請先停止 SQL Server 代理。
最佳方法:必要時,RESTORE 會斷開與用戶的連接;但最好預先關閉應用程序。
如果針對 msdb 使用建議的完整恢復模式,則可將數據庫還原到最近日志備份的時間。
重要提示:當安裝或升級 SQL Server 時,只要使用 Setup.exe 重新生成系統數據庫,msdb 的恢復模式便會自動設置為 SIMPLE。
4、重新生成 resource 數據庫
從 SQL Server 2008 分發介質中啟動 SQL Server 安裝程序 (setup.exe)。
在左側導航區域中單擊“維護”,然后單擊“修復”。
安裝程序支持規則和文件例程將運行,以確保您的系統上安裝了必備組件,并且計算機能夠通過安裝程序驗證規則。單擊“確定”或“安裝”以繼續操作。
在“選擇實例”頁上,選擇要修復的實例,然后單擊“下一步”。
將運行修復規則以驗證修復操作。若要繼續,請單擊“下一步”。
在“準備修復”頁上,單擊“修復”。“完成”頁指示修復操作已完成。
重新生成操作完成后,請檢查 SQL Server 日志中是否存在任何錯誤。默認的日志位置是 C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Logs。若要查找包含重新生成過程的結果的日志文件,請從命令提示符處將目錄更改到“Logs”文件夾,然后運行 findstr /s RebuildDatabase summary*.*。此搜索將引導您找到包含系統數據庫重新生成結果的所有日志文件。打開日志文件,檢查其中有無相關錯誤消息。
轉載于:https://blog.51cto.com/7476463/1683742
總結
以上是生活随笔為你收集整理的SQL 备份与恢复之还原数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sencha Touch 搭建命令
- 下一篇: 【翻译】Ext JS最新技巧——2015