我在同一个驱动器上有一个 MDF 和 LDF,驱动器空间几乎用完了。我在同一个服务器中还有第二个驱动器,我想将 LDF 文件移动到该驱动器。我知道我可以分离并重新连接,但这需要停机时间,我想透明地完成此操作。
- 我在新驱动器上创建了第二个日志文件并将其添加到数据库,因此数据库有两个日志文件。
- 当我尝试删除旧日志文件时,出现“无法删除主日志文件”
我所做的所有研究都表明,无法更改在线数据库上的“主”日志文件 - 您必须将其分离,然后重新附加您想要作为主日志文件的日志文件。在理想情况下,我设想它应该如何工作:
- 创建第二个日志文件并将其添加到数据库
- 将新文件设置为“主要”,以便所有新日志数据都写入那里
- DBCC SHRINKFILE,选中将所有数据迁移到同一组中的其他文件的选项
- 由于旧的“主”文件现在为空,因此您可以从数据库中删除它
我疯了吗?还有什么我不知道的方法吗?
答案1
我会这样做:
- 备份数据库
- 创建新的日志文件
- 在旧数据库上运行 shrinkfile
- 将旧日志文件的初始大小设置为 1MB,并将 Authogrowth 设置为 None。
您将有两个日志文件,但其中一个只有 1 MB。
希望这能有所帮助。我希望有更好的方法可以做到这一点
答案2
以及 Lukasz 的回答
您无法像数据文件那样删除或清空日志文件。您需要停机才能移动它。
但是,现在您有 2 个日志文件。您可以使用 MOVE.. 恢复 .. 以确保两个文件都在您想要的驱动器上。如果您想删除其中一个,则必须分离、删除、附加(不推荐这样做...)。