【问题标题】:Shrinking log file in SQL Server has no change in file sizeSQL Server 中缩小日志文件的文件大小没有变化
【发布时间】:2017-09-20 10:06:03
【问题描述】:

我为一个组织工作,我遇到了一个无法缩小日志文件的问题。 SQL Server 数据库占用了 600 GB 硬盘驱动器中的 400 GB。 日志文件大小约为 350 GB。

我尝试缩小日志文件,但大小保持不变。 我的数据库的恢复模式很简单。

我浏览过在线帖子,其中有建议备份日志文件然后尝试缩小。但是我的驱动器上没有足够的可用空间来保存日志备份。(注意:我只有一个驱动器在我的系统中,我不应该在外部驱动器上进行备份)。

将整个数据库移动到不同的驱动器会有帮助吗? 有什么解决办法吗?

【问题讨论】:

  • SELECT log_reuse_wait_desc FROM sys.databases。另外,从 SMSS 发出DBCC SHRINKFILE(脚本化,而不是通过 GUI),然后查看它打印的消息。如果它不能收缩日志文件,它会告诉你原因。

标签: sql-server sql-server-2008 logfiles shrink


【解决方案1】:

您有一个未结交易。终止所有连接,然后重试。

【讨论】:

    【解决方案2】:

    我尝试缩小日志文件,但大小保持不变。这 我的数据库的恢复模型很简单。

    我浏览了在线帖子,其中有一些建议 备份日志文件,然后尝试收缩。

    如果您的数据库位于 SIMPLE 中,则无法进行日志备份。

    相反,您应该发出一次或多次:

    CHECKPOINT; DBCC SHRINKFILE...
    

    这将在log_reuse_wait_desc 显示NOTHING/CHECKPOINT 时有所帮助。

    如果它显示其他任何内容,您应该消除它显示的原因

    【讨论】:

      【解决方案3】:

      如果您的数据库处于 SIMPLE 模式,请将日志的文件大小更改为较小的值,低至 1 MB。服务器会尽可能地缩小它的大小。

      但是,请注意日志文件的大小可以包含所有活动事务。在您的示例中,在某个时间点,您正在进行价值 350GB 的交易。请注意,现有的服务器活动可能会阻止它缩小到所需的大小。

      在简单模式下,仅当您有一个失控事务炸毁日志时,才值得收缩日志文件。否则,缩小日志文件并不能解决任何问题并影响性能,因为服务器必须立即为新事务再次增大日志文件。

      您可以而且应该将日志文件移动到与数据库文件不同的驱动器。

      【讨论】:

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