【问题标题】:How to control SQL Server database log file size?如何控制 SQL Server 数据库日志文件的大小?
【发布时间】:2017-12-21 15:53:43
【问题描述】:

我们正在使用 MSSQL Server,我们的应用程序每天都有大量的数据交换;大约每天有 20K 行新数据,数据库“日志文件大小”也在不断增加。我们在处理后删除数据以控制数据库大小,但是“数据库日志文件”不断增加。

我们正在手动执行以下脚本来缩小“数据库日志文件”的大小。此外,只有 DB 所有者可以执行此过程。

自动控制 “数据库日志文件” 大小是否有永久修复?比方说,我们希望它最多分配 4GB。它应该会自动清除旧的日志

USE db1;
GO

ALTER DATABASE db1
SET RECOVERY SIMPLE;
GO
--first parameter is log file name and second is size in MB
DBCC SHRINKFILE (db1_log, 999);

ALTER DATABASE db1
SET RECOVERY FULL;
GO

问候, 拉杰

【问题讨论】:

  • 您多久进行一次事务日志备份?
  • 关于如何维护 SQL Server 日志文件的文章有十亿零四篇。您需要阅读备份日志、设置/维护自动增长设置以及如何从一开始就设置文件的适当大小。
  • 您阅读的那些文章中至少有一篇需要是这篇文章。 brentozar.com/archive/2009/08/…
  • @Lamu 我们没有进行任何备份。我们不需要它。

标签: sql-server log-files


【解决方案1】:

我看到了:

SET RECOVERY FULL;

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

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

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

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

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

【讨论】:

    【解决方案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 的要求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      相关资源
      最近更新 更多