SQL Server - 无需停机即可删除主日志文件

SQL Server - 无需停机即可删除主日志文件

我在同一个驱动器上有一个 MDF 和 LDF,驱动器空间几乎用完了。我在同一个服务器中还有第二个驱动器,我想将 LDF 文件移动到该驱动器。我知道我可以分离并重新连接,但这需要停机时间,我想透明地完成此操作。

  1. 我在新驱动器上创建了第二个日志文件并将其添加到数据库,因此数据库有两个日志文件。
  2. 当我尝试删除旧日志文件时,出现“无法删除主日志文件”

我所做的所有研究都表明,无法更改在线数据库上的“主”日志文件 - 您必须将其分离,然后重新附加您想要作为主日志文件的日志文件。在理想情况下,我设想它应该如何工作:

  1. 创建第二个日志文件并将其添加到数据库
  2. 将新文件设置为“主要”,以便所有新日志数据都写入那里
  3. DBCC SHRINKFILE,选中将所有数据迁移到同一组中的其他文件的选项
  4. 由于旧的“主”文件现在为空,因此您可以从数据库中删除它

我疯了吗?还有什么我不知道的方法吗?

答案1

我会这样做:

  1. 备份数据库
  2. 创建新的日志文件
  3. 在旧数据库上运行 shrinkfile
  4. 将旧日志文件的初始大小设置为 1MB,并将 Authogrowth 设置为 None。

您将有两个日志文件,但其中一个只有 1 MB。

希望这能有所帮助。我希望有更好的方法可以做到这一点

答案2

以及 Lukasz 的回答

您无法像数据文件那样删除或清空日志文件。您需要停机才能移动它。

但是,现在您有 2 个日志文件。您可以使用 MOVE.. 恢复 .. 以确保两个文件都在您想要的驱动器上。如果您想删除其中一个,则必须分离、删除、附加(不推荐这样做...)。

相关内容