在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)