源端 | 目标端 | |
服务器名 | SERVER1 | WIN-QBVGAD1A6T0 |
数据库版本 | Microsoft SQL Server 2008 R2 (SP3-GDR) (KB4057113) - 10.50.6560.0 (X64) | Microsoft SQL Server 2008 R2 (SP3-GDR) (KB4057113) - 10.50.6560.0 (X64) |
master、msdb、model数据库路径 | D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA | D:\SQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA |
tempdb数据库路径 | D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA | D:\SQLServer\DATA |
用户数据库路径 | D:\DATA | D:\SQLServer\DATA |
--查询源端和目标端数据库版本(小版本要相同才能还原master数据库)
select @@version
--以下操作均在目标端进行
--cmd下停止数据库服务
net stop mssqlserver
--以单用户模式启动数据库
net start mssqlserver /m
--使用sqlcmd连接到数据库,WIN-QBVGAD1A6T0为计算机名
sqlcmd -E -S WIN-QBVGAD1A6T0
--还原master数据库
restore database master from disk ='D:\SQLServer\Backup\master.bak' with replace
go
--由于恢复的master数据库里记载的其他数据库路径和现在的路径不一致,重新启动SQLServer会失败。必须要用跟踪标志3608来启动
net start mssqlserver /f /m /T3608
--再次使用sqlcmd连接数据库
sqlcmd -E -S WIN-QBVGAD1A6T0
--修改MSDB数据库路径
alter database msdb modify file(name=MSDBData,filename='D:\SQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MSDBData.mdf')
alter database msdb modify file(name=MSDBLog,filename='D:\SQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MSDBLog.ldf')
--修改MODEL数据库路径
alter database model modify file(name=modeldev,filename='D:\SQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\model.mdf')
alter database model modify file(name=modellog,filename='D:\SQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\modellog.ldf')
--修改TEMPDB数据库路径
alter database tempdb modify file(name=tempdev,filename='D:\SQLServer\DATA\tempdb.mdf')
alter database tempdb modify file(name=templog,filename='D:\SQLServer\DATA\templog.ldf')
go
exit
--停止数据库服务
net stop mssqlserver
--正常启动数据库
net start mssqlserver
--停止SQLServerAgent服务,如果是启动状态的话
net stop SQLSERVERAGENT
--使用ssms连接到目标端数据库,注意连接用的账号默认数据库最好是master
--还原msdb数据库
restore database msdb from disk='D:\SQLServer\Backup\msdb.bak' with replace,
move 'MSDBData' to 'D:\SQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MSDBData.mdf',
move 'MSDBLog' to 'D:\SQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MSDBLog.ldf'
--还原model数据库
restore database model from disk='D:\SQLServer\Backup\model.bak' with replace,
move 'modeldev' to 'D:\SQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\model.mdf',
move 'modellog' to 'D:\SQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\modellog.ldf'
--tempdb数据库无需还原
--查询服务器名
select @@servername
--修改服务器名,SERVER1是源端服务器名
Sp_dropserver 'SERVER1'
Go
Sp_addserver 'WIN-QBVGAD1A6T0','local'
Go
--重启数据库
net stop mssqlserver
net start mssqlserver
--再次查询服务器名
select @@servername
--最后依次还原用户数据库