
SQLserver2008系统数据库的迁移.docx
5页SQLSERVER2008的系统数据库迁移意义:一、 就是从c盘移动其他分区二、 从这个硬盘移动其他硬盘,数据库还能启动三、 为一般数据库的迁移做准备系统数据库迁移主要迁移以下数据库第一类:tempdb,model 和 msdb第二类:master, mssqlsystemresource具体的迁移步骤:一、对于master数据库默认SQL Server安装完成后,SQL Server的4个系统数据库(Master, Model, MSDB 和TempDB)都会被自动安放在安装路径下,也就是系统盘的Program Files文件夹下 所带来的问题就是绝大多数数据库服务器为了同时照顾到性能,成本和高可用性这三个 方面,都会将系统安装在一个Raid1阵列上,通常这个Raid 1阵列还不一定会用上15K 的SAS,有的只是用10K的SAS,更有甚者,为了成本,装2个7.2K的SATA也就完事 了再加上Raid1阵列本身就是一种读取性能非常强,但是写入性能相当差的阵列形式, 所以,对于系统数据库,尤其是对TempDB数据库来说,是非常不利的,也肯定会对整 个SQLServer的性能造成影响所以将系统数据库迁移到性能更加高的阵列上,是一个 解决硬件性能瓶颈的基础解决方案。
下面就像大家介绍一下如何将系统数据库迁移到其他分区上(以Microsoft SQL Server 2008 R2 为例):首先迁移master数据库,master数据库是整个SQL Server实例的核心,所有 的设置都存放在master数据库里,如果master数据库出现问题,整个实例都将瘫 痪首先打开SQL Server Configuration Manager,在左边的列表框中选中SQL Server Services节点,然后在右边的列表框中找到需要迁移系统数据库的实例的 那个SQL Server服务,比如说SQLServer(MSSQLSERVER),停止这个实例的服务(不 会停的去菜场买块豆腐撞死算了),然后右键单击,选中最底下的“ Properties”, 并且切换到“Advanced”标签,如下图所示:看到“ Startup Parameters ”了吧,这里的参数就是需要我们更改的如下图 所示:[dCi^ragrarm Files \MicraBoft SQL Server ^8 SQL W. M5SQLSE RVER^SSQLATA Ynaster .mdf;-eC: program riles Microsoft SQL Server^155QL10.M5SQL5ERVERVlS5QLy.og^RRORLOG;HC:program Files飘iirosoft SQL Serwer加5SQLL0.飓SQLSERVER'JMSSQL©g^nastiog.Idf把这段字符整理一下就是这样:-dC:\Program Files\MicrosoftSQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf;-eC:\Program Files\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;-lC:\Program Files\MicrosoftSQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\mastlog.ldf基本上看出来了吧,“-d”后面的就是master数据库数据文件的位置,“-e”是该 SQL Server实例的错误日志所在的位置,至于“T”就是master数据库日志文件 所在的位置了。
修改数据文件和日志文件的路径到适当为位置,错误日志的位置一 般不需要做变更,例如将数据文件存放到D盘的SQLData文件夹下,日志文件存放到E盘的SQLLog文件夹下,则参数如下:-dD:\SQLData\master.mdf;-eC:\Program Files\MicrosoftSQLServer\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;-lE:\SQLLog\mastlog.ldf点击“OK”保存并关闭对话框然后需要做的是将master数据库的数据文件和日志文件剪切到刚刚“Startup Parameters”定义的路径中,接着就可以启动该实例SQL Server服务了注意,此时可能仍然会有出现SQL Server服务无法启动的情况,确保刚刚配置准确 无误,然后就是NTFS权限的事情了,如果你不是用Local System来启动SQL Server 服务,那么更改完存放路径后,你需要给新的盘符或文件夹相应的权限,这样服务 才能启动,建议直接给相应账号"Full Control"的权限,至于为什么嘛,那是经 验,原因得要问Microsoft 了。
好了,到这里,master数据库就算迁移完成了二、对于 empdb,model 和 msdb1、修改文件路径1、修改文件路径--Move tempdbALTER DATABASE tempdb MODIFYFILE(NAME='tempdev',FILENAME='D:\Database\tempdb.mdf);ALTER DATABASE tempdb MODIFYFILE(NAME='templog',FILENAME='D:\Database\templog.ldf);--Move modelALTER DATABASE model MODIFYFILE(NAME='modeldev',FILENAME='D:\Database\model.mdf);ALTER DATABASE model MODIFYFILE(NAME='modellog',FILENAME='D:\Database\modellog.ldf);--Move msdbALTER DATABASE msdb MODIFYFILE(NAME='MSDBData',FILENAME='D:\Database\msdbdata.mdf);ALTER DATABASE msdb MODIFYFILE(NAME='MSDBLog',FILENAME='D:\Database\msdb_log.ldf);2、 停止SQL SERVER!艮务3、 物理移动文件到我们定义的文件夹,比如上面所述D:\Database文件夹;4、启动SQL SERVER服务三、移动Resource数据库移动Resource数据库在SQL Server 2008中,Resource数据库的默认位置为 <驱动器>:\Program Files\Microsoft SQL Server\MSSQL10.
可以移动该数据库;但是, 建议您不要进行移动,这有两个原因:• 应用SQL Server Service Pack和修补程序可将该数据库还原到\Binn位置•如果将故障转移群集环境中的Resource数据库移到非群集位置,将导致故障转移 群集失败若要移动Resource数据库,请按下列步骤进行操作1如果启动了 SQL Server实例,则将其停止2 通过在命令提示符下输入下列命令之一,在仅master恢复模式下启动SQLServer实例在这些命令中指定的参数区分大小写如果未按所示方式指定参数,则 命令会失败对于默认的(MSSQLSERVER)实例,请运行以下命令NET START MSSQLSERVER /f /T3608对于命名实例,请运行以下命令NET START MSSQL$instancename /f /T3608这样做以后数据库处理单用户模式下有关详细信息,请参阅如何启动SQL Server实例(net命令)3 使用sqlcmd命令或SQL Server Management Studio,运行下列语句更改FILENAME路径,以便与数据文件的新位置相匹配不要更改数据库的名称或文件名。
ALTER DATABASE mssqlsystemresource MODIFY FILE (NAME=data, FILENAME= 'new_path_of_master\mssqlsystemresource.mdf');GOALTER DATABASE mssqlsystemresource MODIFY FILE (NAME=log, FILENAME= 'new_path_of_master\mssqlsystemresource.ldf');GO4 将 mssqlsystemresource.mdf 和 mssqlsystemresource.ldf 文件移动到新位置5 通过运行以下语句,将Resource数据库设置为只读数据库ALTER DATABASE mssqlsystemresource SET READ_ONLY;6 退出 sqlcmd 实用工具或 SQL Server Management Studio7 停止SQL Server实例(这步很重要)8 重新启动SQL Server实例。












