一、问题起因
随着数据库文件的日益增大,存放的磁盘空间越发显得不足,同时为了提高数据库的性能,数据库日志文件迁移显得尤为重要,即数据库主文件和日志文件分别存放在不同的磁盘上。
二、尝试迁移
迁移日志文件,首先想到的是Detach和Attach方式,可以使用下面任一种方式
1. 脚本
SP_DETACH_DB 'DB NAME', 'TRUE'
你会发现如下错误
2. 通过SSMS管理器
注意Status和Message列
查了下MSDN,发现确实如此,如果数据库存在发布复制情况,则无法通过Detach和Attach方式来完成(除非你先移除发布复制)。
三、问题解决
1. 通过以下命令得到数据库基本信息
SP_HELPDB DB_NAME
2. 执行以下脚本
ALTER DATABASE DB_NAME MODIFY FILE (NAME =DB_NAME_log, FILENAME = 'D:\DB_Log\DB_NAME_log.ldf');
3. Stop the replication log reader agent job and distribution agent job
4. Offline发布数据库 (如果时间太长,可先停掉SQL Server服务,然后再重启服务,这样可以快速停掉所有的数据库连接和操作)
ALTER DATABASE DB_NAME SET OFFLINE
5. 移动log文件至第2步的位置(即目录D:\LMS_DB\)
6. Online发布数据库
ALTER DATABASE DB_NAME SET ONLINE;
7. 启动第3步停掉的两个Job