重新分配/更改主日志文件 - SQL 2000

重新分配/更改主日志文件 - SQL 2000

我有一个大型数据库(称为 Navision4),目前有 2 个日志文件:

Navision4_Log Navision4_Log3

那里曾是一个名为 Navision4_Log2 的日志,但我设法将其删除。

Navision4_Log 位于 C:\ 驱动器上 - 并且未被使用。Navision4_Log3 位于 G:\ 驱动器上 - 但是很大 - 并且这似乎是所有事务写入的地方。

但是,我想删除一个,只留下一个日志文件。

我该怎么做?我尝试删除 Navision4_Log - 但得到:

错误 5020:无法从数据库中删除主数据或日志文件

答案1

您的数据库使用什么恢复模型?您是否定期进行日志备份?如果您处于完全恢复状态且未进行日志备份,那么这可能解释了为什么 Navision4_Log3 如此之大。您应该通过进行日志备份或切换到简单恢复来解决这个问题。

我会将 Navision4_Log 移至 G 盘,而不是尝试将其删除。我猜想 Navision4_Log3 之所以存在,是因为服务器的 C: 空间不足,而管理员不知道如何移动它。

要将日志文件移动到 G:,请使用以下命令:

ALTER DATABASE Navision4 SET OFFLINE;
--将日志文件移动到 G:
ALTER DATABASE Navision4
MODIFY FILE (
NAME='Navision4_Log',
FILENAME='G:\MSSQL\TLOG\Navision4_Log.ldf');
ALTER DATABASE Navision4 SET ONLINE;

**编辑:**SQL Server 2000 不支持这些选项,因此您必须使用 sp_detachdb 和 sp_attachdb,您也可以在企业管理器 GUI 中分离和附加。只需确保您附加数据库并将所有者指定为 sa。

然后,您可以根据需要删除 Navision4_Log3。您需要做的(如果您处于完全恢复状态)是进行日志备份,然后使用收缩日志。DBCC SHRINKFILE('Navision4_Log3', EMPTYFILE) 您可能需要进行几次备份和收缩,然后文件才会清空,然后您才应该能够删除它。

答案2

因为它是复制数据库,所以您必须在分离之前删除复制。SQL Server 2000 不允许您分离复制数据库。

在 Nick 正确之后,分离数据库并重新连接仅包含您希望在 G 上使用的唯一文件:

相关内容