我们安装数据库后,系统会默认把数据库文件和数据库日志文件最大设为500MB,当然你中途可以更改这个限制。当日志文件接近最大值时,继续使用数据库会提示:事务日志已满。解决这个问题,有3种方案:
第一种解决方案:在数据库上点击右键 → 选择 属性 → 选择 文件,然后增加数据库日志文件的文件大小

第二种解决方案:手动收缩日志文件。
一、准备知识

1、LSN

LSN用来标识特定日志在日志文件中位置(详情请见什么是LSN:日志序列号),它由两部分组成:一部分用来标识VLF(虚拟日志文件)的序列号,剩下的用来标识该日志在VLF中的具体的位置。

根据LSN不同,日志一般分为两类:首日志(最新的活动日志序号)和尾日志(保留时间最长的活动日志序号)。随着数据库的操作不断增加(如数据库中的update操作),首日志LSN序号不断变化。尾日志的序号只有在日志备份后才会变化。
  
  2、VLF

你可以通过DCC LOGINFO去分析数据库LDF中VLF(虚拟日志文件),LDF、VLF、日志的关系是:LDF包括多个VLF,每个VLF中包括多个日志记录。在VLF中,当事物日志增加时,日志的头部(首日志)不断向前移动,日志将占用越来越多的剩余空间,当这个VLF被占满后,新的日志写入到其他未被使用的VLF中,这个时候LDF并不会增大。当LDF中没有可用的VLF时,数据库会创建一个新的VLF。从而使得LDF文件物理增大,占用更多的磁盘空间。


二、解决方法详细阐述

1、日志的截断

上图演示了首日志向前移动的场景,结合图一和图二可以看到,当VLF2的空间被日志填满后,数据库扩充LDF文件(申请更多的磁盘空间),并在扩充后的LDF中新建一个VLF3用来填充新的日志记录。尽管VLF1中存在剩余空间,但因为VLF1中存在活动日志(哪怕只有一条),所以数据库无法利用这个VLF的剩余空间。

这个时候做日志备份就会发生日志截断的现象。一般会将截断理解为"删除"一些日志记录(非活动),实际上它只是意味着尾日志的向前移动:尾日志序号会被刷新成最小的活动日志序号,而从原来尾日志的位置到新位置之间的空间被标记为"可重新利用"。这个过程并不会减少LDF已占用的磁盘空间。如下图,整个VLF1的和部分VLF2上的日志(非活动)被截断了。

随着事务日志不断增加,VLF3中日志头部所在的位置将不断向前移动,当VLF3的空间被占满后,数据库会重新利用VLF1的空间,这种写入、截断、再写入的方式形成一个写日志的循环。在此期间LDF并不会物理上增大。

在数据库上点击右键 → 选择 属性 → 选择 选项,把模式改为简单

然后收缩文件


收缩完了,要把模式改回完整,这样数据库才好继续记录日志

SQL Server 事务日志已满的解决方案相关推荐

  1. SQL Server 事务日志已满,3种解决方案

    我们安装数据库后,系统会默认把数据库文件和数据库日志文件最大设为500MB,当然你中途可以更改这个限制.当日志文件接近最大值时,继续使用数据库会提示:事务日志已满.解决这个问题,有3种方案: 第一种解 ...

  2. NC65 sql server 报数据库“xxx”事务日志已满 的解决方案。

    近日公司的NC系统在做薪资发放的计算是,报了如下图的错误: 如何解决解决事务日志已满的问题(SQL Server 错误 9002)这个问题呢? 微软给的方案 适用于: SQL Server(所有受支持 ...

  3. [Microsoft][ODBC SQL Server Driver][SQL Server]数据库‘XXXXXX‘的事务日志已满。解决办法!

    下午上班,关务人员反应报关软件无法使用,截图过来看了下,报错提示如下: [Microsoft][ODBC SQL Server Driver][SQL Server]数据库'XXXXXX'的事务日志已 ...

  4. SQL Server中事务日志已满的原因以及解决办法

    错误描述:数据库的事务日志已满.若要查明无法重用日志中的空间的原因 ,请参阅sys.databases 中的 log_reuse_wait_desc 列 . 首先引入一下事务日志的概念(来自百度百科) ...

  5. sql server数据库事务日志已满请参阅log_reuse_wait_desc怎么解决?

    数据库使用时,莫名其妙出现关于事务日志已满的报错.具体报错如下: 数据库中的事务日志已满.若要查明无法重用日志中的空间的原因,请参阅sys.databases中的log_reuse_wait_desc ...

  6. SQL 事务日志已满

    SQL 事务日志已满: alter database Featechdata set recovery simple

  7. Sql Server事务日志

    本文导读:SQL Server中的数据库都是由一或多个数据文件以及一或多个事务日志文件组成的.SQL Server事务日志主要是用来记录所有事务对数据库所做的修改,SQL SERVER利用事务日志来确 ...

  8. SQLSERVER 2008 R2 事务日志已满

    方法一: USE [master] GO ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE DNName ...

  9. 了解SQL Server事务日志备份和完整备份的日志序列号

    This article explores the SQL Server Transaction log backups and log sequence number (LSN) in combin ...

最新文章

  1. News | Atomwise获投1.23亿美元推进AI药物研发
  2. linux device结构体,struct device结构体
  3. ant vue 树形菜单横向显示_Vue--组件Ant- 树形结构菜单
  4. 最小公倍数 最大公约数
  5. Java中使用Jedis连接Redis对String进行操作的常用命令
  6. 计算机组成原lta,计算机组成原理实验三运算器
  7. [原创]DebugTools系列(4):AQTime经验总结
  8. 人工智能在fpga的具体应用_人工智能带动了FPGA的发展
  9. python 网格_Python | 网格到情节
  10. osm数据下载 python_GIS Experience (十):OSM数据获取
  11. Springboot是什么?Springboot详解!入门介绍
  12. ajax传值改变对应样式(方法:定义属性)
  13. 关于WEB ServiceWCFWebApi实现身份验证之WEB Service篇
  14. C#环境下利用VS2017使用MapXtreme7.0.0开发桌面应用实例
  15. 解读《美国国家BIM标准》– BIM能力成熟度模型(六)
  16. 经纬度转XY坐标-批量转换
  17. 钣金缺口lisp_方圆段钣金展开的AutoLisp编程方法
  18. HDU 6441 Find Integer
  19. sublime3 一直用的好好,sftp同步文件时忽然提示encoding error,Validating remote folder “/var” failure (Encoding error)
  20. Java开发编程小白零基础学习路线附资源

热门文章

  1. 使用Powershell对目标进行屏幕监控
  2. 手机端页面自适应解决方案—rem布局
  3. PWN入门(5)32位程序与64位程序和构造ROP链
  4. impala java 堆内存配置_【原创】大叔问题定位分享(38)impala报错内存不足
  5. 《面向对象程序设计》课程设计
  6. 秋枫学习笔记-原创文章整理
  7. 使用VMD中的Tachyon渲染出透明逼真的水盒子效果
  8. php微信小程序如何无限点赞,小程序点赞收藏功能
  9. WebAPI编程_DOM
  10. java自学笔记(day14)归纳总结自:B站狂神说java