SQL Server 2008 R2 里迁移系统数据库的方法

针对不同的场景,采用不同的步骤。

对非master以及resource系统数据库而言,分两种情况。

1.非master以及resource系统数据库正常。

这里以迁移msdb为例,将msdb从D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\迁移到D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\system\目录下。

首先我们检查当前msdb的路径

SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'msdb');
----------------------------------------------------------------

name      CurrentLocation           state_desc
MSDBData   D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MSDBData.mdf   ONLINE
MSDBLog     D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MSDBLog.ldf   ONLINE

之后修改数据库中msdb的路径,使之指向新的路径

alter database msdb
modify file (name='MSDBData',filename='D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\system\MSDBData.mdf')
alter database msdb
modify file (name='MSDBLog',filename='D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\system\MSDBLog.ldf')

第三步:停止SQL Server服务

第四步:从物理层面将msdb对应的数据文件和日志文件拷贝到新的路径下

第五步:启动SQL Server服务

第六步:确定迁移结果

SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'msdb');
------------------------------------------------------------

name     CurrentLocation     state_desc
MSDBData   D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\system\MSDBData.mdf     ONLINE
MSDBLog     D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\system\MSDBLog.ldf     ONLINE

 

2.如果由于系统故障,导致需要迁移系统数据库。那么此时我们需要使用另外一种方法

此时以迁移model数据库为例

第一:如果SQL Server运行中,先将该服务关闭

第二:将SQL Server启动到master-only模式

如果是默认实例,在命令行下执行net start mssqlserver /f /T3608

如果是命名实例,在命令行下执行 net start mssql$instancename /f /T3608

第三:使用SSMS或者SQLCMD连接到SQLServer,执行下面的语句

alter database model
modify file (name='modeldev',filename='D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\system\model.mdf')
alter database model
modify file (name='modellog',filename='D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\system\modellog.ldf')

第四:退出当前SSMS或者SQLCMD命令

第五:停止当前SQL Server服务

第六:拷贝model数据库对应的数据和日志文件到新路径

第七:启动SQL Server服务

第八:检查修改

 

SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'model');
-------------------------------------------------------

name     CurrentLocation   state_desc
modeldev   d:\sql2k8_data\mssql10_50.mssqlserver\mssql\data\system\model.mdf   ONLINE
modellog   d:\sql2k8_data\mssql10_50.mssqlserver\mssql\data\system\modellog.ldf   ONLINE

  

对master以及resource数据库的迁移方法如下:

迁移到d:\sql2k8_data\mssql10_50.mssqlserver\mssql\data\system\路径下

第一步:使用sqlservermanager10.msc打开SQL Server配置管理器

第二步:配置管理器的高级选项页中修改启动参数,将对应的路径修改到新路径下

-dD:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\system\master.mdf;-eD:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG;-lD:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\system\mastlog.ldf

第三步:停止SQL Server服务,并将master和resource数据库的数据文件和日志文件迁移到新路径下

其中resource数据库的数据文件和日志文件位于/DATA/Binn路径下

第四步:使用/f和/T3608启动SQL Server服务到Master-Only模式

第五步:修改resource数据库的数据文件和日志文件的路径到新目录

ALTER DATABASE mssqlsystemresource MODIFY FILE (NAME=data, FILENAME=
'D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\system\mssqlsystemresource.mdf');
ALTER DATABASE mssqlsystemresource MODIFY FILE (NAME=log, FILENAME=
'D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\system\mssqlsystemresource.ldf');

第六步:正常启用SQL Server服务

第七步:检查master的文件路径

SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'master');
---------------------------------------------------------

name CurrentLocation state_desc
master d:\sql2k8_data\mssql10_50.mssqlserver\mssql\data\system\master.mdf ONLINE
mastlog d:\sql2k8_data\mssql10_50.mssqlserver\mssql\data\system\mastlog.ldf ONLINE

  

 

 

posted @ 2014-05-17 12:22  Wison-Ho  阅读(1206)  评论(0编辑  收藏  举报