MS SQL 数据库迁移文件

MS SQL 数据库迁移文件,这里说的不是将数据库迁移到另外一台服务器,只是在服务器不同磁盘目录内做迁移。移动数据库文件的情况大致有下面一些:

1: 事先没有规划好,数据库文件或日志文件增长过快,导致某个盘或整个磁盘空间不足,需要移动数据文件或日志文件

2: 纯粹由于业务需求,数据增长过快。

3: 为了更好的IO的性能,需要将数据文件、日志文件分布到不同磁盘,减轻IO压力,提供IO性能。

4:故障恢复。例如,数据库处于可疑模式或因硬件故障而关闭。

案例:现在我在数据库实例中有数据库MyAssistant,(假设)由于事先没有规划好,导致数据文件位于E:\DataBase目录下, 我们需要将数据文件移动到D:\DataBase_Data目录下,

将日志文件移动到F:\DataBase_Log目录下。

clip_image002

步骤1:对数据库中每个要移动的文件(数据文件/日志文件),通过下面命令指定到新的目录

 

USE master
GO
ALTER DATABASE MyAssistant
MODIFY FILE(NAME='MyAssistant', FILENAME='D:\DataBase_Data\MyAssistant.mdf');
GO
ALTER DATABASE MyAssistant
MODIFY FILE(NAME='MyAssistant_log', FILENAME='F:\DataBase_Log\MyAssistant_log.ldf');
GO

 

 

 

如果有多个数据库的数据文件/日志文件需要移动,可以通过一系列上述命令执行

 

ALTER DATABASE DATABASE_ID1
MODIFY FILE(NAME='DATABASE_NAME', FILENAME='....mdf');
ALTER DATABASE DATABASE_ID2
MODIFY FILE(NAME='DATABASE_NAME', FILENAME=.....mdf');
.......

 

 

 

步骤2:停止SQL Server实例,你可以在SQL Server Management Studio的配置工具Sql Server Configuration Manager下停止。也可用NET STOP MSSQLSERVER命令实现。

步骤3:将那些数据文件或日志文件手工移动到对应的目录(也就是上面命令中FILENAME对应的目录)

步骤4:重启SQL Server实例,验证数据文件迁移是否成功。

 

SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('MyAssistant');

 

 

 

对于临时数据库(它比较特殊),由于每次启动 MSSQLSERVER 服务时都会重新创建 tempdb,因此不需要从物理意义上移动数据和日志文件。将在步骤 4 中重新启动服务时创建这些文件。重新启动服务后,tempdb 才继续在当前位置发挥作用。

二:由于硬件故障而需要移动系统数据库

对于由于硬件故障而需要移动系统数据库,移动方案稍微有些不同

步骤1:如果SQL Server实例已经启动,那么停止该实例;

步骤2: 在命令提示符下输入 <SQLPath>\binn\sqlservr -c -f -T3608 ,其中 <SQLPath> 是 SQL Server 实例的路径。例如,C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL。这将启动 SQL Server 实例,以进行仅 master 恢复(SQL Server实例启动到master-only恢复模式)

步骤3: 和上面的步骤一样了,在此不累赘的叙述了。

标签