Server实例迁移案例" />
3.Sqlcmd工具连接SQL
Server实例
http://s14/mw690/0064Lr78zy7c9c8j6gJcd&690Server实例迁移案例" TITLE="完整SQL Server实例迁移案例" />
4.还原master数据库
RESTORE DATABASE master
FROM DISK = 'C:\backup\master.bak'
with replace,
MOVE 'master' TO 'C:\Program
Files\Microsoft SQL
Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\master.mdf',
MOVE 'mastlog' TO 'C:\Program
Files\Microsoft SQL
Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\mastlog.ldf'
http://s3/mw690/0064Lr78zy7c9cantTA92&690Server实例迁移案例" TITLE="完整SQL Server实例迁移案例" />
5.由于恢复的master数据库里记载的其他数据库路径和现在的不一致,这时候重新启动SQL
Server会失败,必须要用跟踪标志3608来启动
http://s11/mw690/0064Lr78zy7c9cbTUymea&690Server实例迁移案例" TITLE="完整SQL Server实例迁移案例" />
6.Sqlcmd连接SQL
Server
http://s1/mw690/0064Lr78zy7c9ccZRte80&690Server实例迁移案例" TITLE="完整SQL Server实例迁移案例" />
7.在原实例上查找各系统数据库文件路径
select db_name(database_id),name,physical_name
from sys.master_files
http://s2/mw690/0064Lr78zy7c9ciAWDD41&690Server实例迁移案例" TITLE="完整SQL Server实例迁移案例" />
8.修改其他系统数据库的正确路径
http://s8/mw690/0064Lr78zy7c9cjPAx1e7&690Server实例迁移案例" TITLE="完整SQL Server实例迁移案例" />
--resource数据库
ALTER DATABASE mssqlsystemresource
MODIFY FILE(NAME=DATA,FILENAME='C:\Program
Files\Microsoft SQL
Server\MSSQL.4\MSSQL\Data\mssqlsystemresource.mdf')
GO
ALTER DATABASE mssqlsystemresource
MODIFY FILE(NAME=LOG,FILENAME='C:\Program
Files\Microsoft SQL
Server\MSSQL.4\MSSQL\Data\mssqlsystemresource.ldf')
GO
--msdb数据库
ALTER DATABASE msdb
MODIFY FILE(NAME=MSDBData,FILENAME='C:\Program
Files\Microsoft SQL
Server\MSSQL.4\MSSQL\Data\msdbdata.mdf')
GO
ALTER DATABASE msdb
MODIFY FILE(NAME=MSDBLog,FILENAME='C:\Program
Files\Microsoft SQL
Server\MSSQL.4\MSSQL\Data\msdblog.ldf')
GO
--model数据库
ALTER DATABASE model
MODIFY FILE(NAME=modeldev,FILENAME='C:\Program
Files\Microsoft SQL
Server\MSSQL.4\MSSQL\Data\model.mdf')
GO
ALTER DATABASE model
MODIFY FILE(NAME=modellog,FILENAME='C:\Program
Files\Microsoft SQL
Server\MSSQL.4\MSSQL\Data\modellog.ldf')
GO
--tempdb数据库
ALTER DATABASE tempdb
MODIFY FILE(NAME=tempdev,FILENAME='C:\Program
Files\Microsoft SQL
Server\MSSQL.4\MSSQL\Data\tempdb.mdf')
GO
ALTER DATABASE tempdb
MODIFY FILE(NAME=templog,FILENAME='C:\Program
Files\Microsoft SQL
Server\MSSQL.4\MSSQL\Data\templog.ldf')
GO
9.停止SQL
Server服务,再以正常模式启动
http://s2/mw690/0064Lr78zy7c9cl7SJrb1&690Server实例迁移案例" TITLE="完整SQL Server实例迁移案例" />
--恢复model数据库
RESTORE DATABASE model
FROM DISK='c:\lab\model.bak'3 WITH
move
'modeldev' TO 'C:\Program
Files\Microsoft SQL
Server\MSSQL.4\MSSQL\Data\model.mdf',
move 'modellog' TO 'C:\Program
Files\Microsoft SQL
Server\MSSQL.4\MSSQL\Data\modellog.ldf' ,REPLACE
--恢复msdb数据库
RESTORE
DATABASE msdb
FROM
DISK='c:\lab\msdb.bak'3
WITH
move
'MSDBData'
TO
'C:\Program Files\Microsoft SQL
Server\MSSQL.4\MSSQL\Data\MSDBData.mdf',
move
'MSDBLog'
TO
'C:\Program Files\Microsoft SQL
Server\MSSQL.4\MSSQL\Data\MSDBLog.ldf' ,REPLACE
Ps:为什麽resource数据库跟tempdb数据库不用还原呢?resource:包含SQLSERVER附带的所有系统对象副本的只读数据库,resource数据库是不能备份的,而且在SSMS里是看不见的
tempdb:用于保存临时或中间结果集的工作空间。每次启动SQLSERVER实例时SQLSERVER都会根据model数据库为蓝本重新创建此数据库。
服务器实例关闭时,将永久删除tempdb数据库中的所有数据
10.修改服务器名称
迁移到新服务上后需修改master里记录的原服务器名
use master
go
select @@servername
select serverproperty('servername')
IF serverproperty('servername')<>@@servername
BEGIN
DECLARE @server
SYSNAME
SET @server=@@servername
EXEC sp_dropserver @server=@server
SET @server=cast(serverproperty('servername') AS SYSNAME)
EXEC sp_addserver @server=@server,@local='LOCAL'
END
ELSE
PRINT '实例名与主机名一致,无需修改!'
运行完上面语句,重启SQL Server服务,再运行SSELECT @@servername
12.恢复所有用户数据库
第11步完成后,所有用户数据库都处于置疑状态,因为本地没有数据文件,后续就是恢复所有用户数据库即可
USE [master]
RESTORE DATABASE [test_shrink]
FROM DISK = N'C:\backup\test.bak' WITH FILE = 1,
MOVE N'test_shrink' TO N'C:\Program
Files\Microsoft SQL
Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test_shrink.mdf',
MOVE N'test_shrink_log' TO N'C:\Program
Files\Microsoft SQL
Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test_shrink_log.ldf', NOUNLOAD, STATS = 5
GO
--直接对应数据库上右击还原,重定位路径即可。
13.迁移完毕检查
检查原来所有login是否能成功登陆,linked
server、数据库触发器、端点及job等对象是否迁移成功。