代码之家  ›  专栏  ›  技术社区  ›  Albert

SQL Server 2008-缩小事务日志-有什么方法可以自动化吗?

  •  6
  • Albert  · 技术社区  · 15 年前

    USE mydb
    GO
    BACKUP LOG mydb WITH TRUNCATE_ONLY
    GO
    DBCC SHRINKFILE(mydb_log,8)
    GO
    

    除了创建自定义的“executet-SQL Statement Task”维护计划任务并将其挂接到我的日志备份任务之外,有没有其他方法可以自动收缩日志?如果这是最好的方法,那就好了…但我只是在想SQL Server会有更好的方法来处理这个问题。我以为每次备份日志时它都会自动收缩,但事实并非如此(也许是因为我的日志传送,我不知道)。

    以下是我目前的备份计划:

    • 每晚进行完整备份
    • 事务日志备份一天一次,早上晚些时候(可能会将正在收缩的日志挂到这个上…但不需要每天都收缩)

    6 回复  |  直到 15 年前
        1
  •  18
  •   Community CDub    5 年前

    如果文件每晚以500 MB的速度增长,则只有一个正确的操作: 将文件预增长到500MB并保留在那里 . 缩小日志文件会造成破坏。让日志文件自动增长也是有害的。

    • 您的日志会以小增量增长,从而创建许多虚拟日志文件,从而导致较差的操作性能
    • 你的原木在收缩过程中会碎裂。虽然不像数据文件碎片那样糟糕,但日志文件碎片仍然会影响性能
    • 总有一天,每天增长的500MB磁盘空间将耗尽,您可能希望该文件是预增长的

    还有更多,我只是厌倦了把它们联系起来。

        2
  •  5
  •   Cade Roux    15 年前
        3
  •  1
  •   Joe L.    15 年前

    我认为你提出的问题是正确的方法。也就是说,“将日志挂接到”您的夜间备份/维护任务流程。最主要的是,您定期进行事务日志备份,这将允许在执行收缩任务时收缩数据库。要记住的关键是,这是一个分两步的过程:1)备份事务日志,它会自动“截断”日志文件;2) 对日志文件运行收缩。”truncate“并不一定(或者永远?)意味着文件将收缩…收缩是您必须执行的单独步骤。

        4
  •  0
  •   Mehmet Sahin    11 年前

    对于SQL Server 2005

    此声明不会破坏日志传送。但是,您可能需要运行多个。对于每次运行,日志传送备份、复制和还原到运行之后都会再次运行此语句。

    收缩和截断是不同的。

    AA db,6.8GB事务日志
    首次运行:6.8 GB
    日志传送备份、复制、第二次运行后恢复:1.9 GB
    日志传送备份、复制、第三次运行后恢复:1.7 GB
    日志传送备份、复制、第四次运行后恢复:1 GB


    首次运行:39 GB
    日志传送备份、复制、第二次运行后恢复:1 GB

        5
  •  0
  •   Milena Petrovic    11 年前

    设置LDF文件大小后,通过设置正确的事务日志备份频率来保持其大小。

    Understanding Logging and Recovery in SQL Server

    Understanding SQL Server Backups

        6
  •  0
  •   Mohamed    9 年前

    根据Microsoft的建议,在压缩日志文件之前,应首先尝试执行以下功能:

    • 将日志文件移动到具有足够空间的磁盘驱动器。
    • 增加日志文件的大小。
    • 通过使用alterdatabase语句为FILEGROWTH选项设置非零增长增量来启用自动增长。

    另外,您应该知道通过维护计划执行的收缩操作将对*.mdf文件和*.ldf文件产生影响。因此,您需要使用SQL作业任务创建维护计划,并编写以下命令,以便只能将*.ldf文件收缩到适当的目标大小。

    use sharepoint_config
    go
    alter database sharepoint_config set recovery simple
    go
    dbcc shrinkfile('SharePoint_Config_log',100)
    go
    alter database sharepoint_config set recovery FUll
    go
    

    注意:100是文件的目标大小,单位为兆字节,用整数表示。如果未指定,DBCC SHRINKFILE会将大小减小为默认文件大小。默认大小是创建文件时指定的大小。

    以我的拙见,不建议定期进行收缩手术!只有在某些情况下,你需要减少物理尺寸。

    你也可以查看这个有用的指南 Shrink a transaction log file Maintenance Plan in SQL Server

    推荐文章