1
4

2 回答 2

3

我看到这个:

SET RECOVERY FULL;

在 FULL 恢复模式下,完整的数据库备份不包括事务日志。此外,服务器在任何情况下都不会删除未备份的日志条目。这意味着日志文件将不断增长。

是否有永久修复来自动控制“数据库日志文件”的大小?

是的。要解决此问题,您需要进行单独的事务日志备份……并经常进行。这将允许日志文件保持在合理的大小......甚至可能比您的 4GB 小得多。

当心。在进行更改后第一次进行备份时,您会得到一个相当大的备份文件,这可能需要一段时间才能完成并给数据库带来很大的负载。但是在第一次运行之后,如果您选择了合理的时间表,事情就会平静下来。

此外,一旦您按照新计划完成了第一次事务日志备份,您最终可以缩小事务日志文件。在那之前缩小文件没有意义......它仍在使用所有空间,即使不是,它也会再次变大。一旦你完成了这个初始收缩,你真的不应该再这样做了。您希望设置您的维护计划,这样您就不需要手动收缩文件,而且您这次甚至只需收缩它以在较早的错误之后恢复到合理的状态。

于 2017-12-21T16:30:17.503 回答
2

SQL Server 清除 t-log 的方式有两种:

  1. 使用简单恢复模型的数据库 - 当检查点发生时,日志将被清除

  2. 使用 FULL 或 BULK_LOGGED 恢复模式的数据库 - 当您发出日志备份时

如果您发出 SHRINKFILE,则 t-log 唯一一次会收缩。

您可以将日志文件的大小预置为 4GB,并自动增长到 4GB。

USE [master]
GO
ALTER DATABASE [DB] MODIFY FILE ( NAME = N'DB_log', SIZE = 4096000KB , FILEGROWTH = 4096000KB )
GO

您的文件增长应设置为In Megabytes而不是In Percent. 在此处输入图像描述

您可以将文件增长限制为固定大小,但我不建议设置此值。一旦达到大小,这可能会阻止应用程序插入。

如果您可以忍受 1 天的停机时间/数据丢失,那么 SIMPLE 恢复将适合您。但是,如果您有一个 24/7 的商店并且需要恢复时间点,您需要将您的数据库设置为 FULL 恢复(清理您的 t-logs 所需的日志备份)并询问您的业务有关 RPO/RTO 的要求。

于 2017-12-22T04:18:11.170 回答