自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何正確恢復(fù)SQL Server的Master系統(tǒng)庫(kù)

數(shù)據(jù)庫(kù) SQL Server
本文介紹了Master庫(kù)在實(shí)例能正常啟動(dòng)和不能正常啟動(dòng),兩種情況下的恢復(fù)方法。

一、問(wèn)題描述

SQL Server 的master數(shù)據(jù)庫(kù)不能像其他用戶或 系統(tǒng)數(shù)據(jù)庫(kù)一樣恢復(fù), 因?yàn)闆](méi)有活動(dòng)的master數(shù)據(jù)庫(kù) SQL Server 無(wú)法執(zhí)行。雖然很少需要恢復(fù) SQL Server master數(shù)據(jù)庫(kù),但如果需要,DBA 必須為這種情況做好準(zhǔn)備。本文介紹可能需要恢復(fù)master數(shù)據(jù)庫(kù)的情況以及如何正確完成這些步驟。

二、解決方案

1、什么時(shí)候必須恢復(fù) SQL Server 的master數(shù)據(jù)庫(kù)?

情景一:

master庫(kù)損壞,如果master庫(kù)被損壞,最好的做法通常是從備份中恢復(fù)。master中的數(shù)據(jù)是相對(duì)靜態(tài)的,因此在大多數(shù)情況 下,丟失幾個(gè)小時(shí)的歷史記錄也沒(méi)有什么問(wèn)題。

情景二:

恢復(fù)master的其他原因可能是恢復(fù)丟失的登錄名且由于某種原因無(wú)法重置密碼。如果需要恢復(fù)master庫(kù)以恢復(fù)用戶數(shù)據(jù)或?qū)ο螅敲催@將是一個(gè)將他們移出master庫(kù)并移入用戶數(shù)據(jù)庫(kù)的機(jī)會(huì)。

2、恢復(fù)SQLSERVER的master庫(kù)的兩種方法

有 2 種可用的方法來(lái)恢復(fù)主數(shù)據(jù)庫(kù)。第一個(gè)只能用于恢復(fù)正在運(yùn)行的 SQL Server 上的主數(shù)據(jù)庫(kù)。如果問(wèn)題是主數(shù)據(jù)庫(kù)損壞并且此損壞導(dǎo)致 SQL Server 無(wú)法啟動(dòng),則必須使用第二種方法。如果 SQL Server 正在運(yùn)行,則可以選擇使用第二種方法。

前提條件:

恢復(fù)最基本的前提是有master備份副本。如果沒(méi)有,首先讓我們備份master庫(kù)

backup database master to disk = 'c:\master.bak' with compression;

方法一:SQLSERVER實(shí)例能正常啟動(dòng)

將 SQL Server 實(shí)例置于單用戶模式

使用傳統(tǒng)的數(shù)據(jù)庫(kù)還原命令,需要將服務(wù)器啟動(dòng)到單用戶模式,否則將會(huì)有如下錯(cuò)誤

Msg 3108, Level 16, State 1, Line 2
要恢復(fù)主數(shù)據(jù)庫(kù),服務(wù)器必須在單用戶模式下運(yùn)行。有關(guān)以單用戶模式啟動(dòng)的信息,請(qǐng)參閱聯(lián)機(jī)叢書(shū)中的“如何:?jiǎn)?dòng) SQL Server 實(shí)例 (sqlservr.exe)”。
消息 3013,級(jí)別 16,狀態(tài) 1,第 2
RESTORE DATABASE 異常終止。

要在單用戶模式下啟動(dòng) SQL Server,我們使用“SQL Server 配置管理器”添加相應(yīng)的啟動(dòng)參數(shù)-m 。

為此,請(qǐng)打開(kāi)“SQL Server 配置管理器”,選擇“SQL Server 服務(wù)”,然后選擇相應(yīng)的 SQL Server 實(shí)例,右鍵單擊它并選擇“啟動(dòng)參數(shù)”。作為啟動(dòng)參數(shù),我們指定“-m”,表示服務(wù)將以單用戶模式啟動(dòng)。

單擊“添加”,然后單擊“應(yīng)用”,將出現(xiàn)以下消息。

修改服務(wù)參數(shù),需要重啟SQL SERVER服務(wù)才能生效。

在單用戶模式下使用 SSMS 還原master數(shù)據(jù)庫(kù)

為避免多個(gè)連接,我們將打開(kāi)“SQL Server Management Studio”,但不連接到服務(wù)器。換句話說(shuō),我們將關(guān)閉“連接到服務(wù)器”窗口,同時(shí)關(guān)閉“對(duì)象資源管理器”。然后我們將點(diǎn)擊“新建查詢”。

在這個(gè)新的查詢窗口中,我們將連接到數(shù)據(jù)庫(kù)。

此時(shí)連接成功。這意味著我們?cè)O(shè)法避免了與服務(wù)器的多個(gè)連接,并為我們的查詢窗口保留了單個(gè)連接。

現(xiàn)在,我們可以在查詢窗口中執(zhí)行我們的 T-SQL 恢復(fù)命令并恢復(fù)主數(shù)據(jù)庫(kù)。

只有在沒(méi)有其他連接到服務(wù)器的情況下,才能以單用戶模式連接到 SQL Server。因此,確保所有可以連接到 SQL Server 的服務(wù)(例如 SQL Server 代理)都已停止。此外,在從 SSMS 連接的情況下,必須消除來(lái)自 SSMS 的所有其他連接。關(guān)閉“對(duì)象資源管理器”并通過(guò)僅打開(kāi)一個(gè)查詢窗口進(jìn)行連接可能是一種解決方案。在此之后,您可以刪除啟動(dòng)參數(shù)并以多用戶模式重新啟動(dòng) SQL Server。

方法二:SQLSERVER實(shí)例無(wú)法啟動(dòng)

如果服務(wù)無(wú)法啟動(dòng),如何執(zhí)行恢復(fù)命令?

這是一個(gè)棘手的問(wèn)題。小編也不希望任何讀者都能體驗(yàn)到這一點(diǎn),但如果確實(shí)發(fā)生了,這些是完成恢復(fù)所要遵循的步驟。

Step1

查找與 SQL Server 相同主要版本的另一個(gè) SQL Server 實(shí)例。如果沒(méi)有其他可用的,則可能需要快速安裝 SQLSERVER實(shí)例。

Step2

將主數(shù)據(jù)庫(kù)備份還原到運(yùn)行正常的 SQL Server 實(shí)例,就像它是普通用戶數(shù)據(jù)庫(kù)一樣。需要使用備用名稱,例如 master_recovery。

restore database master_recovery from disk = 'c:\master.bak' with
move 'master' to 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\master_recovery.mdf',
move 'mastlog' to 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\mastlog_recovery.ldf';

step3

現(xiàn)在數(shù)據(jù)庫(kù)已在線,步驟 3 是將該數(shù)據(jù)庫(kù)與工作實(shí)例分離。

USE [master] 
GO
EXEC master.dbo.sp_detach_db @dbname = N'master_recovery'
GO

step4

此時(shí) 2 個(gè)數(shù)據(jù)庫(kù)文件不再附加到 SQL Server 的工作實(shí)例。第 4 步是將 2 個(gè)文件移動(dòng)到有 master 問(wèn)題的實(shí)例的服務(wù)器。

step5

接下來(lái),對(duì)于第 5 步,必須告知遇到問(wèn)題的 SQL Server 實(shí)例使用這些新文件,而不是失敗的文件。這可以通過(guò)更改 SQL Server 的啟動(dòng)參數(shù),以指向這些新文件或?qū)?master.mdf 和 mastlog.ldf 重命名為新名稱并重命名 _recovery文件以匹配默認(rèn)文件名來(lái)完成。無(wú)論哪種方式,下一次服務(wù)啟動(dòng)都將使用新文件而不是壞文件。

下面的演示,是通過(guò)修改啟動(dòng)參數(shù)指向_recovery 文件而不是默認(rèn)文件。接著重新啟動(dòng)服務(wù)(因?yàn)樗谶\(yùn)行)?,F(xiàn)在該服務(wù)正在使用恢復(fù)的主數(shù)據(jù)庫(kù)而不是失敗的主數(shù)據(jù)庫(kù)。

最后一步是 在這個(gè) master 副本上運(yùn)行 DBCC CHECKDB 。如果顯示有損壞,請(qǐng)及時(shí)返回,直到找到正確的副本。CheckDB 不能在較早的步驟中運(yùn)行,因?yàn)橹鲾?shù)據(jù)庫(kù)在作為用戶數(shù)據(jù)庫(kù)檢查時(shí)會(huì)產(chǎn)生誤報(bào)。

三、還原 SQL Server master數(shù)據(jù)庫(kù)時(shí)會(huì)丟失哪些數(shù)據(jù)?

剛剛通過(guò)恢復(fù)較舊的主數(shù)據(jù)庫(kù)或從另一個(gè)實(shí)例獲取副本來(lái)及時(shí)回溯,在此轉(zhuǎn)換中可能會(huì)丟失哪些數(shù)據(jù)?

  • 主數(shù)據(jù)庫(kù)中的大多數(shù)數(shù)據(jù)都是靜態(tài)的,但是幾天后回溯,還是有一些事情需要檢查。
  • 在備份和還原之間是否添加或刪除了任何登錄名?這些將需要重新創(chuàng)建或刪除。
  • 是否有人在該窗口期間更改了密碼?如果是這樣,他們的舊密碼將重新生效。
  • 是否更改了任何服務(wù)器角色分配?這些將被還原。

如果在時(shí)間窗口內(nèi)添加了任何數(shù)據(jù)庫(kù),則舊master數(shù)據(jù)庫(kù)將無(wú)法識(shí)別它們。數(shù)據(jù)庫(kù)文件本身不會(huì)被刪除,因此只需附加數(shù)據(jù)庫(kù)即可。如果在該窗口期間刪除了任何數(shù)據(jù)庫(kù),那么它們將顯示為可以再次刪除的可疑數(shù)據(jù)庫(kù)。任何像sp_configure中更改的設(shè)置都 將恢復(fù)。

四、小結(jié)

本文介紹了master庫(kù)在實(shí)例能正常啟動(dòng)和不能正常啟動(dòng),兩種情況下的恢復(fù)方法。

責(zé)任編輯:姜華 來(lái)源: 雪竹子
相關(guān)推薦

2022-09-22 22:51:32

Master數(shù)據(jù)庫(kù)

2011-05-10 16:34:03

MasterSQL Server

2022-09-27 21:22:02

SQL Server數(shù)據(jù)庫(kù)

2011-03-23 10:08:09

2011-05-13 13:26:52

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

2010-07-01 15:02:29

SQL Server數(shù)

2011-03-24 09:45:34

SQL Server數(shù)恢復(fù)

2019-04-26 13:20:24

數(shù)據(jù)庫(kù)PostgreSQL Oracle

2010-06-29 17:56:47

正確升級(jí)SQL Ser

2010-07-07 10:25:00

SQL Server索

2010-07-13 17:31:56

SQL Server恢

2010-07-08 11:05:14

SQL Server數(shù)

2011-03-24 11:14:46

2010-06-30 08:46:51

升級(jí)SQL Serve

2010-06-28 10:36:42

SQL Server數(shù)

2010-10-19 14:11:20

SQL SERVER恢

2011-09-21 14:00:34

SQL Server

2010-10-21 11:35:45

恢復(fù)SQL Serve

2011-04-02 11:02:54

SQL Server數(shù)文件恢復(fù)

2010-07-09 12:22:42

SQL Server超
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)