溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

發(fā)布時間:2020-07-27 00:34:05 來源:網(wǎng)絡(luò) 閱讀:896 作者:tsykl200811 欄目:數(shù)據(jù)庫

數(shù)據(jù)庫完整還原的目的是還原整個數(shù)據(jù)庫。 整個數(shù)據(jù)庫在還原期間處于脫機狀態(tài)。在數(shù)據(jù)庫的任何部分變?yōu)槁?lián)機之前,必須將所有數(shù)據(jù)恢復(fù)到同一點,即數(shù)據(jù)庫的所有部分都處于同一時間點并且不存在未提交的事務(wù)。

在完整恢復(fù)模式下,數(shù)據(jù)庫可以還原到特定時間點。時間點可以是最新的可用備份、特定的日期和時間或者標(biāo)記的事務(wù)。

還原完整數(shù)據(jù)庫步驟

通常,將數(shù)據(jù)庫恢復(fù)到故障點分為以下幾個步驟:

1. 備份活動事務(wù)日志(稱為尾部日志)。此操作將創(chuàng)建結(jié)尾日志備份。如果活動日志不可用,則該日志部分的所有事務(wù)將全部丟失。

注:在完整恢復(fù)模式和大容量日志恢復(fù)模式下,如果要恢復(fù)數(shù)據(jù)到故障點,必須備份活動事務(wù)日志。

2. 還原最新完整數(shù)據(jù)庫備份而不恢復(fù)數(shù)據(jù)庫。(with norecovery)

3. 如果存在差異備份,還原最新的差異備份數(shù)據(jù)而不恢復(fù)數(shù)據(jù)庫。(with norecovery)

4. 從還原備份后創(chuàng)建的第一個事務(wù)日志備份開始,使用norecovery依次還原日志。

5. 恢復(fù)數(shù)據(jù)庫(RESTORE DATABASE database_name WITH RECOVERY)。此步驟也可以與還原上一次日志備份結(jié)合使用。

6. 數(shù)據(jù)庫完整還原通常可以恢復(fù)到日志備份中的某一時間點或標(biāo)記的事務(wù)。但是,在大容量日志恢復(fù)模式下,如果日志備份包含大容量更改,則不能進行時點恢復(fù)。

本文以下的所有操作,都是建立在之前存在備份的情況下進行。

數(shù)據(jù)庫完整備份恢復(fù)之SQL Server Management Studio

備份日志尾部

在完整恢復(fù)模式或大容量日志恢復(fù)模式下,使用日志結(jié)尾以捕獲尚未備份的活動事務(wù)日志,可以防止工作丟失并確保日志鏈的完整性,同時也可以把數(shù)據(jù)恢復(fù)到故障點時的數(shù)據(jù)。

結(jié)尾日志備份與任何其他日志備份類似,使用 BACKUP LOG 語句執(zhí)行。建議您在下列情況下執(zhí)行結(jié)尾日志備份

如果數(shù)據(jù)庫處于聯(lián)機狀態(tài)并且您計劃對數(shù)據(jù)庫執(zhí)行還原操作,則請在開始還原操作之前,使用 WITH NORECOVERY 備份日志尾部

BACKUP LOG 數(shù)據(jù)庫名稱 TO <備份設(shè)備> WITH NORECOVERY

注:為防止出錯,必須使用 NORECOVERY 選項。

注:每當(dāng)您準(zhǔn)備對數(shù)據(jù)庫繼續(xù)執(zhí)行還原操作時,請使用 NORECOVERY。NORECOVERY 使數(shù)據(jù)庫進入還原狀態(tài)。這確保了數(shù)據(jù)庫在結(jié)尾日志備份后不會更改。

除非同時指定 NO_TRUNCATE 或 COPY_ONLY 選項,否則將截斷日志。

除非數(shù)據(jù)庫受損,否則不建議使用 NO_TRUNCATE

2)如果數(shù)據(jù)庫處于脫機狀態(tài)并且無法啟動。

嘗試執(zhí)行結(jié)尾日志備份。由于此時不會發(fā)生任何事務(wù),因此 WITH NORECOVERY 是可選的。如果數(shù)據(jù)庫受損,請使用 WITH CONTINUE_AFTER_ERROR,如下所示:

BACKUP LOG 數(shù)據(jù)庫名稱 TO < 備份設(shè)備> WITH CONTINUE_AFTER_ERROR

如果數(shù)據(jù)庫受損(例如,數(shù)據(jù)庫無法啟動),則僅當(dāng)日志文件未受損、數(shù)據(jù)庫處于支持結(jié)尾日志備份的狀態(tài)并且不包含任何大容量日志更改時,結(jié)尾日志備份才能成功。

關(guān)于結(jié)尾日志備份,請參考:https://technet.microsoft.com/zh-cn/library/ms179314(v=sql.105).aspx

新建目標(biāo)數(shù)據(jù)庫

開始--所有程序--Microsoft SQL Server 2008 R2--SQL Server Management Studio ,打開登陸mssql

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

展開 服務(wù)器---數(shù)據(jù)庫,右擊數(shù)據(jù)庫,選擇新建數(shù)據(jù)庫(本例中之前的備份的數(shù)據(jù)庫名稱是Pine9_2016).

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

修改數(shù)據(jù)庫存放路徑和文件夾,推薦磁盤分區(qū)盤符和文件夾名稱能跟原來的數(shù)據(jù)庫一致,減少恢復(fù)過程中的麻煩,當(dāng)然不一致也是可以的。我這里修改成跟原服務(wù)器的路徑一模一樣

記住這里的數(shù)據(jù)庫名稱,一定要與之前的數(shù)據(jù)庫名稱保持一樣,否則,數(shù)據(jù)庫恢復(fù)之后,開發(fā)還需要去調(diào)整配置,增加復(fù)雜度。

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

點擊按鈕,確認。

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

至此,已經(jīng)看到了Pine9_2016,代表數(shù)據(jù)庫已經(jīng)新建完成。

完整備份恢復(fù)

點擊選中 Pine9_2016,右擊它,定位到任務(wù)--還原--數(shù)據(jù)庫,打開

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

選擇 常規(guī)--還原的源--選上,源設(shè)備,點擊 右邊的瀏覽,

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

點擊 添加 按鈕

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

定位備份文件的位置,

修改 所選路徑和文件名,本例中備份設(shè)備是存放在局域網(wǎng)中的一臺共享服務(wù)器上,所以,修改路徑如下圖:

文件名,選擇完整備份的文件。

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

點擊 確定

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

點擊 確定

選擇用于還原的備份集,勾選 完整備份的文件備份設(shè)備,如下圖:

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

切換到 左上角 “選項” 選項頁

勾選 覆蓋現(xiàn)有數(shù)據(jù)庫 和 不對數(shù)據(jù)庫執(zhí)行任何操作,不會滾提交的事務(wù)??梢赃€原其他事務(wù)日志(restore with norecovery)

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

覆蓋現(xiàn)有數(shù)據(jù)庫

指定還原操作覆蓋當(dāng)前使用您指定的數(shù)據(jù)庫名稱的數(shù)據(jù)庫文件。即使從其他數(shù)據(jù)庫還原到現(xiàn)有的數(shù)據(jù)庫名稱,現(xiàn)有數(shù)據(jù)庫文件也將被覆蓋。選擇此選項等效于在 RESTORE 語句 (Transact-SQL) 中使用 REPLACE 選項,建議謹慎使用,因為本例是新的數(shù)據(jù)庫,為 保證數(shù)據(jù)庫的一致性,我選擇了此項,記住后續(xù)的差異備份恢復(fù)不應(yīng)該選擇此項。

保留復(fù)制設(shè)置

將已發(fā)布的數(shù)據(jù)庫還原到創(chuàng)建該數(shù)據(jù)庫的服務(wù)器之外的服務(wù)器時,保留復(fù)制設(shè)置。此選項只適用于在創(chuàng)建備份時對數(shù)據(jù)庫進行了復(fù)制的情況。

僅在選擇“回滾未提交的事務(wù),使數(shù)據(jù)庫處于可以使用的狀態(tài)”選項時,此選項才可用

還原每個備份之前進行提示

指定了在還原了每個備份之后,將顯示“繼續(xù)還原”對話框,詢問你是否繼續(xù)還原順序。通常用于備份暫停,更換磁帶或者其他介質(zhì)。

限制訪問還原的數(shù)據(jù)庫

使還原的數(shù)據(jù)庫僅供 db_owner、dbcreatorsysadmin 的成員使用。

選擇此選項等效于在 RESTORE 語句中使用 RESTRICTED_USER 選項

點擊按鈕 “確定”,開始進入數(shù)據(jù)恢復(fù)狀態(tài)。

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

出現(xiàn)上圖中左下角的 “正在執(zhí)行”,這個時候,我們只需要靜靜等待,直到出現(xiàn)如下提示:

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

到此,數(shù)據(jù)庫的完整備份恢復(fù)已經(jīng)完成,是不是代表數(shù)據(jù)庫就已經(jīng)恢復(fù)完成了,有些新手就以為完整備份就相當(dāng)于恢復(fù)了所有的數(shù)據(jù)以及日志,有經(jīng)驗的管理員,會發(fā)現(xiàn)這是不夠的,完整備份只是代表過去某個時間點的數(shù)據(jù),而不是最新的數(shù)據(jù),要真正的完全恢 復(fù)數(shù)據(jù),需要執(zhí)行完整備份之后的差異備份恢復(fù)。

差異備份恢復(fù)

點擊 服務(wù)器,展開數(shù)據(jù)庫,右擊Pine9_2016(正在還原),任務(wù)--還原--數(shù)據(jù)庫

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

定位 “常規(guī)” 選項頁,選中 “源設(shè)備”,點擊右邊的瀏覽小按鈕,Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

點擊 添加

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

所選路徑,是你數(shù)據(jù)庫備份的位置; 文件名是差異備份的備份文件名,這里定義的差異備份后綴是.diff,也可以自己定義的

記住,這里的差異備份文件,一定要是最新的一份差異備份文件奧。

點擊 “確定”

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

點擊 “確定”選擇用于還原的備份集,勾選 備份設(shè)備,

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

左上角,定位到 “選項” 選項頁,選中 “不對數(shù)據(jù)庫執(zhí)行任何操作,不會滾未提交的事務(wù)。可以還原其他事務(wù)日志(A)。(Restore with norecovery)“

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

點擊 確定

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

點擊 ”確定”

前文已經(jīng)描述過,恢復(fù)的步驟,接下來,進行事務(wù)日志備份還原。

事務(wù)日志備份還原

點擊 服務(wù)器,展開數(shù)據(jù)庫,右擊Pine9_2016,任務(wù)--還原--事務(wù)日志,

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

“常規(guī)“ 選項頁,選中”從文件或磁帶“,點擊右邊瀏覽圖標(biāo),

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

點擊 添加

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

所選路徑,是備份文件存在的路徑

文件名,是事務(wù)日志備份的文件名,記住,這里的備份文件,是上面的差異備份之后的第一個事務(wù)日志開始,逐一進行恢復(fù)。

點擊 確定

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

點擊 確定

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

選中 左上角,”選項”選項頁

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

點擊 確定

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

至此,恢復(fù)已經(jīng)完成。

注意:對于事務(wù)日志,在最新的差異備份之后的所有的事務(wù)日志,都需要進行上述步驟,以保證數(shù)據(jù)的完整性。

結(jié)尾日志的恢復(fù)方法,跟事務(wù)日志的恢復(fù)方法一樣。

恢復(fù)數(shù)據(jù)庫

到這里,只剩下最后一步了,恢復(fù)數(shù)據(jù)庫。

Mssql企業(yè)實戰(zhàn)之?dāng)?shù)據(jù)庫恢復(fù)

執(zhí)行如下語句:

use master

RESTORE DATABASE Pine9_2016 WITH RECOVERY;

Go

注意:Pine9_2016 是數(shù)據(jù)庫名,根據(jù)你自己的實際環(huán)境,修改成你自己的實際環(huán)境下的數(shù)據(jù)庫名。

到此,數(shù)據(jù)庫的恢復(fù),已經(jīng)完整,可以接入系統(tǒng),正常訪問數(shù)據(jù)庫了

數(shù)據(jù)庫完整備份恢復(fù)之T-SQL

首先要新建數(shù)據(jù)庫,在這里我不再說明,

還原的基本步驟

1) RESTORE DATABASE database FROM full database backup WITH NORECOVERY;

2) RESTORE DATABASE database FROM full_differential_backup WITH NORECOVERY;

3) RESTORE LOG database FROM log_backup WITH NORECOVERY;

對于其他每個日志備份,重復(fù)此還原日志步驟。(包含結(jié)尾日志也是一樣)

4) RESTORE DATABASE database WITH RECOVERY;

在這里我直接把數(shù)據(jù)庫的SQL語句貼出來,大家修改成自己實際需要的,再粘貼到查詢管理器里面直接執(zhí)行即可。

完整備份恢復(fù)

RESTORE DATABASE [Pine9_2016] FROM DISK = N'\\192.168.10.78\mssql_backup\Pine9_2016_backup_2016_08_06_023000_9215269.bak' WITH FILE = 1, NORECOVERY, NOUNLOAD, REPLACE, STATS = 10

GO

差異備份恢復(fù)

RESTORE DATABASE [Pine9_2016] FROM DISK = N'\\192.168.10.78\mssql_backup\Pine9_2016_backup_2016_08_07_023001_2750767.diff' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10

GO

事務(wù)日志備份恢復(fù)

RESTORE LOG [Pine9_2016] FROM DISK = N'\\192.168.10.78\mssql_backup\Pine9_2016_backup_2016_08_06_030000_6901599.trn' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10

GO

所有的事務(wù)日志,重復(fù)以上步驟。包括結(jié)尾日志也是一樣

恢復(fù)數(shù)據(jù)庫

use master

RESTORE DATABASE Pine9_2016 WITH RECOVERY;

Go

如果順利,恭喜,數(shù)據(jù)庫已經(jīng)恢復(fù)完成了。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI