SQL Server 系統數據庫恢復

jopen 9年前發布 | 14K 次閱讀 SQL Server 數據庫服務器

原文出處: pursuer.chen 

系統數據庫說明 (在新窗口查看原圖)

SQL Server 系統數據庫恢復

 

單用戶啟動實例

方法1:在配置管理器中,右鍵實例在啟動參數中添加-m(注意是小寫的m),重新啟動服務,處理完之后記得把-m參數去除重新啟動服務。

SQL Server 系統數據庫恢復

方法2:在cmd中,使用net start mssqlserver /m,首先先停止所有相關的服務.

SQL Server 系統數據庫恢復

保持此窗口的情況下,數據庫實例是無法進行連接登入的,所有出來完之后需要再次重啟服務,重啟的時候把/m參數去除。

方法3:在cmd中先定位到數據庫安裝目錄“Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn”,輸入sqlservr.exe –c –m,然后打開msms直接點新建查詢使用管理員用戶進入。

SQL Server 系統數據庫恢復

 

補充:配置管理員專用鏈接

運行輸入cmd

輸入Sqlcmd –A –S 127.0.0.1 或者Sqlcmd –A –S IP 或者Sqlcmd –A –S 機器名

通過新建查詢連接

ADMIN:IP或者ADMIN:127.0.0.1或者ADMIN:機器名

常用查詢語句

select * from sys.dm_exec_requests

SELECT * from sysprocesses

select * from sys.dm_os_memory_cache_counters

select * from sys.dm_exec_sessions

 

還原master數據庫

還原master的數據庫必須在單用戶啟動實例,然后使用管理員用戶進行還原。這也是文章前面講單用戶啟動實例的目的

使用方法1和方法3啟動實例之后,不要用往常登入的方式登入SQL管理工具,而是之間點擊新建查詢或者點擊文件菜單-新建-數據庫引擎查詢,然后輸入管理員權限的用戶進入,接下來就是還原數據庫了,還原語句很簡單例如:

RESTORE DATABASE [master] FROM  DISK = N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\master.bak' 
GO
如果失敗則加上WITH REPLACE
RESTORE DATABASE [master] FROM  DISK = N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\master.bak' 
WITH REPLACE

方法2有一個要注意的地方就是,在單用戶啟動實例之后進入sqlcmd工具,執行use master之后每一步記得加上go,否則一直是光標閃動,還有方法2只能還原master數據庫無法還原其他數據庫。

SQL Server 系統數據庫恢復

還原完之后再以正常的方式重新啟動服務就好。

注意:如果重新生成master數據庫之后(這里的重新生成和還原備份是不一樣的,如果是還原最新的備份是不用再重新還原msdb和model數據庫),一定要重新還原msdb和model數據庫。
 

還原msdb數據庫

還原 model 或 msdb 數據庫與對用戶數據庫執行完整的數據庫還原相同。不能還原用戶正在訪問的數據庫。如果 SQL Server 代理正在運行,它可以訪問 msdb 數據庫。因此,在還原 msdb 之前,請先停止 SQL Server 代理。

msdb數據庫需要在單用戶模式下進行還原,這里說的單用戶跟前面的master的單用戶啟動實例不一樣,這里的單用戶只是獲取msdb數據庫的單獨訪問權限,所以可以用語句將數據庫設置成單用戶模式然后執行還原。

USE [master]
GO
ALTER DATABASE [msdb] SET  SINGLE_USER WITH NO_WAIT
GO
RESTORE DATABASE [msdb] FROM  DISK = N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\msdb.bak'
ALTER DATABASE [msdb] SET MULTI_USER WITH NO_WAIT

 

還原model數據庫

還原model數據庫與還原用戶數據庫的方法一樣,這里就不做介紹。
 

還原Resource數據庫

這個系統數據庫無法進行備份還原,只能對文件進行備份;2008r2版本的sql的數據文件和日志文件在“D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn”路徑下。
 

備份還原復制數據庫

復制支持將復制的數據庫還原到從中創建備份的同一服務器和數據庫。 如果將復制數據庫的備份還原到其他服務器或數據庫,則無法保留復制設置。 在這種情況下,您必須在還原備份后重新創建所有發布和訂閱(如果正在使用日志傳送,則可以將復制數據庫還原到備用服務器)。

應定期備份復制數據庫及其關聯系統數據庫。 備份下列數據庫:

  • 發布服務器上的發布數據庫
  • 分發服務器上的分發數據庫
  • 各個訂閱服務器上的訂閱數據庫

發布服務器、分發服務器和所有訂閱服務器上的 master 和 msdb 系統數據庫。 當備份這些數據庫中的一個數據庫或相關的復制數據庫時,應同時備份這些數據庫。 例如,應在備份發布數據庫的同時備份發布服務器上的 master 和 msdb 數據庫。 如果還原發布數據庫,請確保 master 和 msdb 數據庫在復制配置和設置方面與發布數據庫保持一致。
可以參照:https://msdn.microsoft.com/zh-cn/library/ms152560.aspx
 

總結

總之系統數據庫對于實例是非常重要的,所以備份計劃中一定不能少了系統數據庫的備份。

如果文章對大家有幫助,希望大家能給個推薦,謝謝!!!

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!