将日志文件移动而不使数据库离线

我需要将数据库日志文件移动到一个新的分区,而不需要将数据库下线。 通常的做法是先分离数据库,然后移动日志文件,最后重新附加数据库。 是否有可能在不将数据库本身下线的情况下完成这个操作?如果可以,具体如何操作?

请参阅http://dba.stackexchange.com/questions/96457/moving-db-log-destination。 - Vadzim
3个回答

使用在线数据库无法完成此操作。

当您移动数据库文件(ALTER DATABASE ... MODIFY FILE)时,甚至会收到以下消息:

文件“YourFile”已在系统目录中进行了修改。新路径将在下次启动数据库时生效


这样做的正常方法是将数据库分离,移动日志文件,然后重新附加数据库。 我不会选择这种“正常”或被接受的方式来完成它。要移动数据库文件,我会按照以下步骤进行操作: 1. 运行 ALTER DATABASE 命令以更改文件的位置。 2. 将数据库脱机。 3. 物理上将文件移动到步骤1中指定的新位置。 4. 将数据库上线。 请参考 TechNet 上的此链接:移动用户数据库

根据TechNet上的参考移动用户数据库(来自Thomas Stringer的答案),如果您想在不停止整个SQL Server实例的情况下移动文件(遵循"计划重定位程序"),顺序应该是:
ALTER DATABASE database_name SET OFFLINE;
... move the file(s) to new location
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' );
ALTER DATABASE database_name SET ONLINE;
请先注意离线操作,然后移动文件并告知 SQL Server 新的位置。 如果您确实需要关闭整个 SQL Server 实例(请参阅“计划磁盘维护的迁移”程序),最好先修改文件位置,这样当实例重新启动时,就不会出现在新位置找不到文件的问题。

我知道这是一个旧问题,但是你不能只是在新位置添加第二个日志文件(然后由数据库代替原来的日志文件使用),然后再收缩/移除原始的日志文件吗?