SQL SERVER-系统数据库还原

 

系统数据库介绍

 

master   记录实例的系统信息(login,linkserver...),SQL SERVER启动时打开的第一个数据库。

model   SQL SERVER启动时需要用它创建tempDB,无tempDB不能启动。还原方式与用户DB一样。

msdb    保存代理,备份等信息。(默认该DB是简单恢复模式,如果要对其备份计划,则建议改为完整恢复模式)还原方式与用户DB一样。

tempdb

Resource    一个只读的数据库,不会写入数据。相同版本的sql server他们的resource数据库是一样的(可以手动备份文件),还原时停掉实例,手动放到相应路径。

默认位置:C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn

 

 

还原数据库SQL
--参数recovery意思是回滚未提交的事务好让DB可用,norecovery意思不回滚未提交事务这样还原完DB是不可用的。
restore database  database_name  from  backup_device  with recovery
--发生错误继续还原,还原完查看错误日志看遇到了哪些错误
restore database  database_name  from  backup_device  with continue_after_error,recovery

 

 

还原系统数据库

 

还原master

 

1.要确保新的SQL SERVER和旧的版本一致。

--查询的版本号要一致
select @@version

 

2.在备用服务器上停止所有SQL SERVER服务,以单用户启动SQL SERVER实例(我这里指定用sqlcmd登陆)。

 

net start mssqlserver /m"SQLCMD"

 

3.sqlcmd连接

 

 

 4.还原master

 

还原完成后,实例自动停止

restore database master from disk='E:\master\master_backup_2020_03_27_114340_1691283.bak'  with replace

 

新实例也有master所以要采用覆盖(with replace)不然会报错

The backup set holds a backup of a database other than the existing 'master' database.

 

 

5.由于master记录的是旧的系统DB路径,如果和现在的不同的话,直接启动会失败,所以要加个跟踪标志3608来启动,然后修改路径不同的系统DB的路径。

如果2台系统DB路径是相同的则可直接正常启动。

net start MSSQLSERVER /f /m /T3608

 

 

--mssqlsystemresource
alter database mssqlsystemresource modify file(name=data,file='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\mssqlsystemresource.mdf')
alter database mssqlsystemresource modify file(name=log,file='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\mssqlsystemresource.ldf')

--msdb
alter database msdb modify file(name=MSDBData,file='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\msdbdata.mdf')
alter database msdb modify file(name=MSDBLog,file='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\msdblog.ldf')

--model
alter database model modify file(name=modeldev,file='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\model.mdf')
alter database model modify file(name=modellog,file='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\modellog.ldf')

--tempdb
alter database tempdb modify file(name=tempdev,file='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\tempdb.mdf')
alter database tempdb modify file(name=tempdev,file='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\tempdb.ldf')

 

 

6.我这次2台系统DB的路径是相同的,所以就直接启动了,

 

还原msdb

restore database  msdb from  disk='E:\msdb\msdb_backup_2020_03_27_114340_3878743.bak' 
with move 'MSDBData' to 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\msdbdata.mdf',
move 'MSDBLog' to 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\msdblog.ldf',
replace

 

还原model

 

restore database  model from  disk='E:\model\model_backup_2020_03_27_114340_2316265.bak' 
with move 'modeldev' to 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\model.mdf',
move 'modellog' to 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\modellog.ldf',
replace

 

 

7.修改服务器名

因为master是旧的那台的,所以他保存的是旧的服务器名

--查询服务器名
select  @@servername


--删除旧的,添加当前的
sp_dropserver'oldservername'
go

sp_addserver 'newservername','local'
go

 

实例重启后即生效。

 

 

8.这时实例级的job.linkserver,login等都已配置到了新的一台,但是用户数据是怀疑状态,因为还没有还原用户DB,还原即可。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值