如何迁移系统数据库
默认SQL Server安装完成后,SQL Server的4个系统数据库(master,model,msdb和tempdb)都会被自动安放在安装路径下,也就是系统盘的Program Files文件夹下。所带来的问题就是,绝大多数数据库服务器为了同时照顾到性能,成本和高可用性这三个方面,都会将系统安装在一个Raid1阵列上,通常这个Raid1阵列还不一定会用上15K的SAS,有的只是用10K的SAS,更有甚者,为了成本,装2个7.2K的SATA也就完事了。再加上Raid1阵列本身就是一种读取性能非常强,但是写入性能相当差的阵列形式,所以,对于系统数据库,尤其是对TempDB数据库来说,是非常不利的,也肯定会对整个SQL Server的性能造成影响。
所以将系统数据库迁移到一个性能更加高的阵列上,是一个解决硬件性能瓶颈的基础解决方案。
下面就介绍一下如何将系统数据库迁移到其他分区上(以SQL Server 2016为例):
迁移master数据库
- 1.打开SQL Server Configuration Manager,先在左边的列表框选中SQL Server Services,再在右边的列表框选中SQL Server(MSSQLSERVER),
- 2.停止该服务
- 3.右键选中"Properties",切换到"Startup Parameters"标签,选中指定的启动参数(S)并更新:
-dD:\sqldata\master.mdf
-eD:\sqldata\ERRORLOG
-lD:\sqllog\mastlog.ldf
- 4.移动物理文件到新目录
- 5.启动该服务
迁移model、msdb、tempdb数据库
- 1.修改逻辑文件名及对应的物理文件路径
ALTER DATABASE model MODIFY FILE(NAME='modeldev',FILENAME='D:\sqldata\model.mdf');
ALTER DATABASE model MODIFY FILE(NAME='modellog',FILENAME='D:\sqllog\modellog.ldf');
ALTER DATABASE msdb MODIFY FILE(NAME='MSDBData',FILENAME='D:\sqldata\msdbdata.mdf');
ALTER DATABASE msdb MODIFY FILE(NAME='MSDBLog',FILENAME='D:\sqllog\msdb_log.ldf');
如果tempdb有多个ndf请参考添加.
ALTER DATABASE tempdb MODIFY FILE(NAME='tempdev',FILENAME='D:\sqldata\tempdb.mdf');
ALTER DATABASE tempdb MODIFY FILE(NAME='templog',FILENAME='D:\sqllog\templog.ldf');
ALTER DATABASE tempdb MODIFY FILE(NAME='temp2',FILENAME='D:\sqldata\tempdb_mssql_2.ndf');
2.停掉SQLServer服务
3.移动物理文件到新目录。
注意:对于tempdb,由于每次启动 MSSQLSERVER 服务时都会重新创建 tempdb,因此不需要从物理意义上移动数据和日志文件。
- 4.启动SQLServer服务