源端

目标端

服务器名

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

--最后依次还原用户数据库