【问题标题】:Shrinking transactional Log file not working收缩事务日志文件不起作用
【发布时间】:2019-11-22 01:12:58
【问题描述】:

我将生产数据库恢复到测试环境。在 Prod 中,它配置为事务复制和 400GB 左右的数据库,仅日志文件 120GB。

我尝试将数据库设置为简单恢复并缩小DBCC Shrinkfile 仍然日志文件大小相同(我知道缩小不是一个理想的解决方案,但我想让它变小)。没有长时间运行的事务和阻塞

这是我所遵循的:

* Backup database

    ALTER DATABASE DatabaseName SET RECOVERY SIMPLE
    GO
    DBCC SHRINKFILE (databasenaem_log,5) 
    GO

    ALTER DATABASE DatabaseName SET RECOVERY FULL
    GO

我检查了 sys.databases,log_reuse_wait_desc 列,它显示“复制”,这可能是日志文件不允许收缩的原因。问题是数据库或服务器上没有复制(发布者或订阅者)。

select name, log_reuse_wait_desc from sys.databases 

我需要设置复制并关闭吗?

【问题讨论】:

  • 为什么要将恢复模式设置回 FULL?我怀疑您不需要在测试环境中进行时间点恢复。
  • @AlanBurstein,我需要在压缩日志文件后让数据库处于完全恢复状态

标签: sql-server transactional-replication shrink


【解决方案1】:

这是我之前遇到的一个问题。有时是因为在复制过程仍在运行时配置了复制然后删除,有时原因未知(DBCC CheckDB with REPAIR ALLOW DATA LOSS 似乎是一个常见的原因),但我发现修复的最佳方法问题在于this MSDN article 中的信息。

基本上,您使用 SNAPSHOT 复制设置复制,然后删除复制。

这将清除日志中的复制保留,并允许您缩小它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 2020-08-16
    • 2017-12-01
    相关资源
    最近更新 更多