移动日志文件而不使数据库脱机

Not*_*tMe 14 sql-server sql-server-2008-r2

我需要将数据库日志文件移动到新分区而不使数据库脱机。

执行此操作的正常方法是分离数据库,移动日志文件,然后重新附加数据库。

是否可以在不使数据库本身离线的情况下执行此操作,如果可以,如何执行?

Tho*_*ger 16

使用在线数据库无法做到这一点。

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

系统目录中的文件“YourFile”已被修改。下次启动数据库时使用新路径。


执行此操作的正常方法是分离数据库,移动日志文件,然后重新附加数据库。

这不是我会做的“正常”或接受的方式。要移动数据库文件,我执行以下操作:

  1. 运行 ALTER DATABASE 命令以更改文件的位置
  2. 使数据库脱机
  3. 将文件物理移动到步骤 #1 中指定的新位置
  4. 使数据库联机

请参阅 TechNet 上的此参考:移动用户数据库


小智 5

根据Thomas Stringer 的回答中TechNet Move User Databases的参考资料,如果您想在不停止整个 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;
Run Code Online (Sandbox Code Playgroud)

先注意OFFLINE;然后移动文件并告诉 SQL Server 新位置。

如果您确实需要关闭整个 SQL Server 实例(请参阅“计划磁盘维护的重新定位”过程),最好首先修改文件位置,以便在重新启动实例时,查找文件不会出现问题在新地点。