有遇到过mdf文件大小几天不变ldf日志激增的问题吗?

cywyes 2020-09-16 09:25:35
如图:
...全文
239 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cywyes 2020-09-18
  • 打赏
  • 举报
回复
补充说明一下:简单模式,日志截断无效,日志收缩无效。 自己找到原因并解决了,这是SQL Server 2014的一个bug,使用了内存优化表功能就可能会遇到: https://support.microsoft.com/en-us/help/3090141/fix-offline-checkpoint-thread-shuts-down-without-providing-detailed-ex 解决办法: 1、打补丁到 SQL 2014 SP3。 2、重启SQL服务,因为我的数据库有 800G 的事务日志需要恢复,数据库显示 FLCommon(正在恢复),大约要等2小时,才能正常。 3、此时数据库Online恢复服务了,但日志依然没法截断和收缩,执行CheckPoint语句,大约等1小时执行完毕。 4、查询 SELECT log_reuse_wait_desc, * FROM sys.databases WHERE NAME = 'FLCommon',log_reuse_wait_desc还是显示CheckPoint。 5、查询 dbcc loginfo() 发现1000多行的日志status仍是2。 6、继续等10-20分钟,再查4、5,发现log_reuse_wait_desc还是显示Nothing,1000多行的日志status变为0。 7、执行DBCC ShrinkFile('FLCommon_Log', 512) 成功收缩日志至512MB。 希望对使用了内存优化表并遇到这种诡异案例的同学有所帮助,谢谢大家。
appo_li 2020-09-17
  • 打赏
  • 举报
回复
引用 2 楼 中国风 的回复:
日志过大,非业务库不需要记录日志时,可用简单模式 收缩
USE [Test]
GO
DBCC SHRINKFILE (N'日志文件逻辑名' , 0)
GO
更改数据库为简单模式
USE [master]
GO
ALTER DATABASE [DBName] SET RECOVERY SIMPLE WITH NO_WAIT
GO
楼上正解
datafansbj 2020-09-17
  • 打赏
  • 举报
回复
从原理上说,ldf 与 mdf 的大小关系不大。一个不大的 mdf,可能会造成较大的 ldf,一个很大的 mdf,可能 ldf 很小。mdf 是存储数据的,数据越多文件越大;ldf 是存储事务日志的,执行的事务越复杂、涉及的记录越多,ldf 越大。一个 update 或 delete 语句就可能造成 ldf 文件大小激增。
  • 打赏
  • 举报
回复
1.设置成简单模式 2.收缩日志文件 3.如果是完整模式,需定时做日志备份后截断才能保证日志不会增长过大。
guozhanxiang1 2020-09-16
  • 打赏
  • 举报
回复
收缩下日志文件
RINK_1 2020-09-16
  • 打赏
  • 举报
回复
你有没有做事务同步
中国风 2020-09-16
  • 打赏
  • 举报
回复
日志过大,非业务库不需要记录日志时,可用简单模式 收缩
USE [Test]
GO
DBCC SHRINKFILE (N'日志文件逻辑名' , 0)
GO
更改数据库为简单模式
USE [master]
GO
ALTER DATABASE [DBName] SET RECOVERY SIMPLE WITH NO_WAIT
GO

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧