在SQL Server 中,master 數據庫記錄系統級別的元數據,例如,logon accounts, endpoints, linked servers, and system configuration settings,同時,master 數據庫記錄其他數據庫及其文件的位置,因此,在啟動SQL Server實例時,master數據庫必須最先啟動。master 數據庫是如此重要,必須頻繁地備份master數據庫。Only full database backups of master can be created.
一,備份master數據庫
master數據庫只能做full backup,不能做差異備份和事務日志備份,原因是master只能處於Recovered 狀態,不能處於NoRecovery(recovering)狀態。
backup database [master] to disk = 'D:\TestDBBackupFolder\master_1.bak' --specify new backup file with compression, format, init, skip, stats=5
二,還原master數據庫
master數據庫必須在單用戶模式下還原,因此,在還原master數據之前,必須先停止SQL Server的所有服務(Service),包括MSSQLServer、Agent、Broser、Fulltext等,避免其競爭訪問MSSQLService,然后,以管理員打開命令行;
step1,使用命令行net start,以single user 模式啟動SQL Server實例的Service:MSSQLServer
參數/m“sqlcmd”:表示以單用戶(Single User)模式啟動Service,並且,只允許sqlcmd客戶端訪問service;
net start MSSQLSERVER /m"sqlcmd"
step2,使用sqlcmd登錄到SQL Server實例
-E:指定sqlcmd以信任連接(trusted connection)方式登錄Service,參數-E是默認的;
-S:指定sqlcmd連接的Server-Name
sqlcmd -E -S server-name
step3,使用sqlcmd還原master數據庫,由於SQL Server實例中已經存在master數據庫,必須指定replace選項,將原有的master數據庫替換掉;
restore database master from disk='D:\DBBackup\master.bak' with replace; go
master數據還原完成之后,啟動SQL Server實例的Service,就可以正常訪問SQL Server實例。
參考文檔:
SqlServer系統數據庫還原(三)系統數據庫master-msdb-model 還原模擬測試
Restore the master Database (Transact-SQL)
