中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

如何恢復SQLSERVER的master系統庫

發布時間:2022-09-23 09:52:06 來源:億速云 閱讀:153 作者:iii 欄目:開發技術

這篇文章主要介紹了如何恢復SQLSERVER的master系統庫的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇如何恢復SQLSERVER的master系統庫文章都會有所收獲,下面我們一起來看看吧。

    一、問題描述

    SQL Server 的master數據庫不能像其他用戶或 系統數據庫一樣恢復, 因為沒有活動的master數據庫 SQL Server 無法執行。雖然很少需要恢復 SQL Server master數據庫,但如果需要,DBA 必須為這種情況做好準備。

    二、解決方案

    2.1 什么時候必須恢復 SQL Server 主數據庫?

    情景一:

    master庫損壞,如果master庫被損壞,最好的做法通常是從備份中恢復。master中的數據是相對靜態的,因此在大多數情況 下,丟失幾個小時的歷史記錄也沒有什么問題。

    情景二:

    恢復master的其他原因可能是恢復丟失的登錄名且由于某種原因無法重置密碼。如果需要恢復master庫以恢復用戶數據或對象,那么這將是一個將他們移出master庫并移入用戶數據庫的機會。

    2.2 恢復SQLSERVER的master庫的兩種方法

    有 2 種可用的方法來恢復主數據庫。第一個只能用于恢復正在運行的 SQL Server 上的主數據庫。如果問題是主數據庫損壞并且此損壞導致 SQL Server 無法啟動,則必須使用第二種方法。如果 SQL Server 正在運行,則可以選擇使用第二種方法。

    前提條件:

    恢復最基本的前提是有master備份副本。如果沒有,首先讓我們備份master庫

    backup database master to disk = 'c:\master.bak' with compression;
    2.2.1 方法一:SQLSERVER實例能正常啟動

    1、將 SQL Server 實例置于單用戶模式

    使用傳統的數據庫還原命令,需要將服務器啟動到單用戶模式,否則將會有如下錯誤

    Msg 3108, Level 16, State 1, Line 2
    要恢復主數據庫,服務器必須在單用戶模式下運行。有關以單用戶模式啟動的信息,請參閱聯機叢書中的“如何:啟動 SQL Server 實例 (sqlservr.exe)”。
    消息 3013,級別 16,狀態 1,第 2 行
    RESTORE DATABASE 異常終止。

    要在單用戶模式下啟動 SQL Server,我們使用“SQL Server 配置管理器”添加相應的啟動參數-m 。

    為此,請打開“SQL Server 配置管理器”,選擇“SQL Server 服務”,然后選擇相應的 SQL Server 實例,右鍵單擊它并選擇“啟動參數”。作為啟動參數,我們指定“-m”,表示服務將以單用戶模式啟動。

    如何恢復SQLSERVER的master系統庫

    單擊“添加”,然后單擊“應用”,將出現以下消息。

    如何恢復SQLSERVER的master系統庫

    修改服務參數,需要重啟SQL SERVER服務才能生效。

    如何恢復SQLSERVER的master系統庫

    2、在單用戶模式下使用 SSMS 還原master數據庫

    為避免多個連接,我們將打開“SQL Server Management Studio”,但不連接到服務器。換句話說,我們將關閉“連接到服務器”窗口,同時關閉“對象資源管理器”。然后我們將點擊“新建查詢”。

    如何恢復SQLSERVER的master系統庫

    在這個新的查詢窗口中,我們將連接到數據庫。

    如何恢復SQLSERVER的master系統庫

    此時連接成功。這意味著我們設法避免了與服務器的多個連接,并為我們的查詢窗口保留了單個連接。

    現在,我們可以在查詢窗口中執行我們的 T-SQL 恢復命令并恢復主數據庫。

    如何恢復SQLSERVER的master系統庫

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

    2.2.2 方法二:SQLSERVER實例無法啟動

    如果服務無法啟動,如何執行恢復命令?

    這是一個棘手的問題。小編也不希望任何讀者都能體驗到這一點,但如果確實發生了,這些是完成恢復所要遵循的步驟。

    Step1

    查找與 SQL Server 相同主要版本的另一個 SQL Server 實例。如果沒有其他可用的,則可能需要快速安裝 SQLSERVER實例。

    Step2

    將主數據庫備份還原到運行正常的 SQL Server 實例,就像它是普通用戶數據庫一樣。需要使用備用名稱,例如 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

    現在數據庫已在線,步驟 3 是將該數據庫與工作實例分離。

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

    step4

    此時 2 個數據庫文件不再附加到 SQL Server 的工作實例。第 4 步是將 2 個文件移動到有 master 問題的實例的服務器。

    step5

    接下來,對于第 5 步,必須告知遇到問題的 SQL Server 實例使用這些新文件,而不是失敗的文件。這可以通過更改 SQL Server 的啟動參數,以指向這些新文件或將 master.mdf 和 mastlog.ldf 重命名為新名稱并重命名 _recovery文件以匹配默認文件名來完成。無論哪種方式,下一次服務啟動都將使用新文件而不是壞文件。

    下面的演示,是通過修改啟動參數指向_recovery 文件而不是默認文件。接著重新啟動服務(因為它正在運行)。現在該服務正在使用恢復的主數據庫而不是失敗的主數據庫。

    如何恢復SQLSERVER的master系統庫

    最后一步是 在這個 master 副本上運行 DBCC CHECKDB 。如果顯示有損壞,請及時返回,直到找到正確的副本。CheckDB 不能在較早的步驟中運行,因為主數據庫在作為用戶數據庫檢查時會產生誤報。

    三、還原 SQL Server master數據庫時會丟失哪些數據?

    剛剛通過恢復較舊的主數據庫或從另一個實例獲取副本來及時回溯,在此轉換中可能會丟失哪些數據?

    • 主數據庫中的大多數數據都是靜態的,但是幾天后回溯,還是有一些事情需要檢查。

    • 在備份和還原之間是否添加或刪除了任何登錄名?這些將需要重新創建或刪除。

    • 是否有人在該窗口期間更改了密碼?如果是這樣,他們的舊密碼將重新生效。

    是否更改了任何服務器角色分配?這些將被還原。

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

    關于“如何恢復SQLSERVER的master系統庫”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“如何恢復SQLSERVER的master系統庫”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    静宁县| 宁乡县| 陵水| 信丰县| 南平市| 武穴市| 绵阳市| 靖边县| 巴楚县| 浪卡子县| 滁州市| 黑山县| 东乌珠穆沁旗| 太谷县| 乃东县| 成武县| 恭城| 湘阴县| 东城区| 兴宁市| 迁西县| 平舆县| 北辰区| 安泽县| 上虞市| 莒南县| 凭祥市| 嘉黎县| 深水埗区| 新和县| 靖远县| 无棣县| 郴州市| 鱼台县| 邵东县| 德化县| 临颍县| 牙克石市| 晋城| 凭祥市| 乌拉特前旗|