解决SQLServer事物日志过大的方法
在平时的运维中,DBA会经常遇到SQL Server日志文件过大导致磁盘空间不足的情况,这时候就需要把日志文件收缩一下来释放磁盘空间,下面介绍了收缩日志文件的方法
一.要进行日志文件收缩首先要把事物日志截断。
正常情况下SQL Server的事物日志自动截断方法分以下两种情况
1.简单恢复模式下,在检查点之后发生。
2.在完整恢复模式或大容量日志恢复模式下,如果自上一次备份后生成检查点,则在日志备份后进行截断(除非是仅复制日志备份)。
查看恢复模式的方法如下
在命令下查看
语法:SELECT name, recovery_model_desc
FROM sys.databases
WHERE name = '数据库名' ;
查看效果如图所示
(1)如果是在完整或者大容量日志的恢复模式下,那我们就要查看一下近期是否做过完整的日志以确定日志是否被自动截断过
(2)关于数据库的检查点,检查点会根据系统的恢复间隔自动生成检查点
(3)有时候因素导致事物日志截断会被延迟,我们可以使用命令来查看截断被延迟的原因
命令语法:SELECT name,log_reuse_wait,log_reuse_wait_desc
FROM sys.databases
WHERE name = '数据库名' ;
我们可以根据结果中输出的log_reuse_wait 和 log_reuse_wait_desc 的值来查找原因
下表为log_reuse_wait 和 log_reuse_wait_desc 的值的解释此表来源于微软知识库:http://technet.microsoft.com/zh-cn/library/ms345414(v=sql.90).aspx
log_reuse_wait值
log_reuse_wait_desc 值
说明
0
NOTHING
当前有一个或多个可重用的虚拟日志文件。
1
CHECKPOINT
自上次日志截断之后,尚未出现检查点,或者日志头部尚未跨一个虚拟日志文件移动(所有恢复模式)。
这是日志截断延迟的常见原因。 有关详细信息,请参阅检查点和日志的活动部分。
2
LOG_BACKUP
要求日志备份将日志标头前移(仅适用于完整恢复模式或大容量日志恢复模式)。
日志备份不会阻止截断。
日志备份完成后,日志标头将前移,并且一些日志空间可能会变为可重新使用。
3
ACTIVE_BACKUP_OR_RESTORE
数据备份或还原正在进行(所有恢复模式)。
数据备份与活动事务的工作原理相同;数据备份运行时,将阻止截断。 有关详细信息,请参阅本主题后面的“数据备份操作与还原操作”部分。
4
ACTIVE_TRANSACTION
事务处于活动状态(所有恢复模式)。
· 在日志备份开始时,可能存在长时间运行的事务。在这种情况下,释放空间可能需要进行其他日志备份。 有关详细信息,请参阅本主题后面的“长时间运行的活动事务”部分。
· 事务将延迟(仅适用于 SQL Server 2005 Enterprise Edition 及更高版本)。 “延迟的事务”实际上是其回滚由于某些资源不可用而受阻的活动事务。 有关导致事务延迟的原因以及如何使它们摆脱被延迟状态的信息,请参阅延迟的事务.
5
DATABASE_MIRRORING
数据库镜像暂停,或者在高性能模式下,镜像数据库明显滞后于主体数据库(仅限于完整恢复模式)。
有关详细信息,请参阅本主题后面的“数据库镜像与事务日志”部分。
6
REPLICATION
在事务复制过程中,与发布相关的事务仍未传递到分发数据库(仅限于完整恢复模式)。
有关详细信息,请参阅本主题后面的“事务复制与事务日志”部分。
7
DATABASE_SNAPSHOT_CREATION
正在创建数据库快照(所有恢复模式)。
这是日志截断延迟的常见原因,通常也是主要原因。
8
LOG_SCAN
正在进行日志扫描(所有恢复模式)。
这是日志截断延迟的常见原因,通常也是主要原因。
9
OTHER_TRANSIENT
此值当前未使用。
二.收缩日志文件
在事物日志进行截断之后,那我们就可以把日志文件进行收缩
可以使用DBCC SHRINKFILE使用命令进行收缩
下图是把以下示例将 test用户数据库中名为test_log的数据文件的大小收缩到 10 MB。
执行完命令后查看日志文件是否缩小,日志文件收缩后不会比虚拟日志文件小
通常情况下,日志没有被收缩都是因为日志文件未被截断造成的。还有一个办法是把将数据库恢复模式设置为“ SIMPLE ”模式后再次运行 DBCC SHRINKFILE 命令
更改数据库恢复模式的命令如下
ALTER DATABASE 数据库名 SET RECOVERY FULL ; --更改为完全模式
ALTER DATABASE 数据库名 SET RECOVERY bulk_logged ; --更改为大容量日志模式
ALTER DATABASE数据库名SET RECOVERY ; --更改为简单模式
执行效果如图所示
注意事项:如果更改为简单模式,那以后将无需事物日志备份,但是一定要确保的定期执行数据库备份来确保数据的完整性。
如果更改为完整模式或者大容量日志模式,那一定首先进行一次完整的数据库备份以启动日志链,并且设置任务计划来定期的日志备份
转载于:https://blog.51cto.com/tianshili/1640535
解决SQLServer事物日志过大的方法相关推荐
- sqlserver 事务日志过大 收缩方法解决方案
sqlserver 事务日志过大 收缩方法解决方案 参考文章: (1)sqlserver 事务日志过大 收缩方法解决方案 (2)https://www.cnblogs.com/QingKing/p/4 ...
- Sqlserver 错误日志太大导致硬盘空间不足
Sqlserver 数据库因长时间使用,错误日志过大导致硬盘空间不足. 解决办法:清除Sqlserver错误日志 1.新建查询 2.选择master 3.执行 sp_cycle_errorlog 六次 ...
- 完美解决前端无法上传大文件方法
1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...
- sqlserver 事务日志已满和'PRIMARY'
sqlserver 事务日志已满和'PRIMARY' 1.出现这个问题是日志文件达到了单个文件的极限了要解决这个问题有两个方法 1.删除日志:解决方法是这样子的:DUMP TRANSACTION 库名 ...
- SQLSERVER 清理日志文件的方法
很多时候SQLSERVER的日志文件是不看的,但时间久了,够把磁盘撑爆,这时候就需要清理日志文件.使用以下方法,在实际环境中经过测试,400G的日志文件1秒就被清理. 操作步骤 1. 将恢复模式改成& ...
- [zabbix]解决binlog日志过大/web界面中文乱码问题
转载来源: [zabbix]解决binlog日志过大/web界面中文乱码问题 : https://www.jianshu.com/p/44cace796206 记录之前在跑项目过程中遇到的一次binl ...
- 解决PresentationFontCache.exe占CPU过大的方法
解决PresentationFontCache.exe占CPU过大的方法 第一步:停止FontCache3.0.0.0服务,或者用命令行:net stop FontCache3.0.0.0 第二步:删 ...
- 事物日志恢复 mysql_一种基于事务日志的Mysql数据恢复方法与流程
本发明涉及一种mysql数据恢复方法,尤其涉及一种基于事务日志的mysql数据恢复方法. 背景技术: :在对mysql数据库进行日常操作的过程中,总是无法避免会产生各种误删数据,误改数据等操作.这个时 ...
- SQLSERVER数据库日志文件过大,如何压缩并定期清理 ?
日志文件64.7G,硬盘都快满了, 解决方案如下:先压缩数据库日志文件 (以我SQL2000 的iRecorder数据库为例): 右键iRecorder 属性 --> 选项-->故障还 ...
最新文章
- 你可能不知道的Shell
- powerdesigner导出到mysql数据库
- python子进程关闭fd_python – 捕获崩溃的子进程的“分段错误”...
- 3d打印 开源_Hovalin:开源3D打印小提琴
- 系统集成资质培训 - 2013下半年系统集成资质申报及集成资质考试
- usb linux 内核,Linux内核USB驱动架构:USB设备驱动架构.pdf
- Facebook跟踪用户手机地理位置 并借此推介朋友
- ubuntu18.04搭建nfs
- 关于日期单双日,星期判断
- 微信小程序用什么工具开发(微信小程序开发工具介绍)
- 局域网DNS服务器搭建
- 在Word中,如何删除页眉页脚
- 基于微信跳蚤市场二手交易小程序系统设计与实现 开题报告
- 微信图片怎么添加竖排文字_轻松设置微信竖排昵称
- 怎样根据电阻上的色环,判断电阻的大小
- Python中第三方库-Faker应用
- 将字符串转化为字符串数组
- 鸿蒙强者排行榜,琉璃美人煞十大强者排名,腾蛇垫底,司凤第七,罗喉计都屈居第二...
- .o0博客导读0o. 12/13/2010最后更新
- EnjoyToShare | 考研资料分享群