SQL Server系列之 在发布复制模式下移动日志文件

一、问题起因

  随着数据库文件的日益增大,存放的磁盘空间越发显得不足,同时为了提高数据库的性能,数据库日志文件迁移显得尤为重要,即数据库主文件和日志文件分别存放在不同的磁盘上。 

二、尝试迁移

  迁移日志文件,首先想到的是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

作者:舍长
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
原文地址:https://www.cnblogs.com/panchunting/p/SQL_Tech_002.html