一、迁移的意义:
1,一般就是从C盘移动其他分区;
2,从这个硬盘移动其他硬盘,数据库还是正常启动;
3,为一般的数据库迁移做准备;
二、系统数据库迁移主要迁移的数据库
第一类:tempdb,model,msdb
第二类:master,(resource可选)
三、迁移步骤:
1,master数据库
一般默认SQlServer数据库安装完成后,SQLServer的4个系统数据库(master、model、msdb、tempdb)都会被自动安装在安装路径下,也就是系统盘的ProgramFIles文件夹下。所带来的问题就是绝大多数数据库服务器为了同时照顾到性能,成本和高可用性着三个方面,都会将数据库安装在同一个磁盘(raid1)上,通常这个磁盘(Raid1)还不一定会用上15k的SAS,有的只用了10k的SAS,更有甚者,为了成本,装2个7.2k的sata也就完事,再加上Raid1阵列本身就是一种读取性能非常强,但是写入性能相当差的阵列形式。所以对于系统数据库,尤其对tempdb数据库来说是非常不利的,就肯定会对整个SQLServer的性能造成影响。
所以,将整个系统数据库迁移到性能更加高的阵列上,是一个解决硬件性能瓶颈的基础解决方案。
具体介绍一下如何将系统数据库迁移到其他分区上(以sql2008 R2为例):
1,首先迁移master数据库,而且master数据库也是整个SQLServer数据库实例的核心,所有的设置都存放在master数据库,如果master数据库出现问题,整个实例都将瘫痪。
首先打开SQLServerConfiguration Manager,在左边列表框中选中SQLServerSerrvices节点,然后在左边的列表框找到要迁移的系统数据库的实例的那个SQL Server服务,比如SQLServer(MSSQLSERVER),停止这个实例的服务,然后单击选中最底下的“属性”,并且切换到“方面”标签,如图:
看到“Startup Parameters”,这里的参数就是需要我们修改的,如图:
文字整理:
-dC:\Program Files\Microsoft
SQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf;
-eC:\Program Files\Microsoft SQL
Server\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;
-lC:\Program Files\Microsoft
SQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\mastlog.ldf
“-d”后面的就是master数据库文件的位置,“-e”是该SQLServer实例的错误日志所在位置,至于“-l”
就是master数据库日志文件所在的位置。
修改数据文件和日志文件的路径适当位置,错误日志的位置一般需要做变更,例如:将数据库文件存放到D盘的SQLData文件夹下,日志文件存放到E盘的SQLLog文件夹下,则参数如下:
-dD:\SQLData\master.mdf;-eC:\Program Files\Microsoft
SQLServer\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;-lE:\SQLLog\mastlog.ldf
点击 “OK”保存并关闭对话框。
然后需要做的是将master数据库的数据库文件和日志文件剪贴到刚刚“startup parameters”定义的路径中, 接着启动该服务实例的服务。
注意:
此时可能仍然会有出现SQL Server服务无法启动的情况,确保刚刚配置准确无误,然后就是NTFS权限的事情了,如果你不是用LocalSystem来启动SQLServer服务,那么更改完存放路径后,你需要给新的盘符或文件夹相应的权限,这样服务才能启动,建议直接给相应账号“FullControl”的权限,至于为什么,那是经验,原因得要问Microsoft了。
master数据库就算迁移完成。
对于tempdb、msdb和model数据库 1、修改文件路径
--Move tempdb
ALTER DATABASE tempdbMODIFY
FILE(NAME='tempdev',FILENAME='D:\Database\tempdb.mdf');
ALTER DATABASE tempdbMODIFY
FILE(NAME='templog',FILENAME='D:\Database\templog.ldf');
--Move model
ALTER DATABASE modelMODIFY
FILE(NAME='modeldev',FILENAME='D:\Database\model.mdf');
ALTER DATABASE modelMODIFY
FILE(NAME='modellog',FILENAME='D:\Database\modellog.ldf');
--Move msdb
ALTER DATABASE msdbMODIFY
FILE(NAME='MSDBData',FILENAME='D:\Database\msdbdata.mdf');
ALTER DATABASE msdbMODIFY
FILE(NAME='MSDBLog',FILENAME='D:\Database\msdb_log.ldf');
2,停止SQL Server服务;
3,物理移动文件到我们要定义的文件;
4,启动SQL Server 服务;
5,迁移完成。