SQL Server 日志收缩方法
在日常运维中,有时会遇到“The transaction log for database 'xxxx' is full due to 'ACTIVE_TRANSACTION'.”这样的报错信息。
此错误消息表明:数据库的事务日志文件空间耗尽,log 文件不能再存储新的transaction log。
这个时候我们需要进行日志收缩。本文将介绍日志收缩的两种方法。
通过图形界面进行日志收缩
第一步:右键数据库属性

第二步:更改数据库恢复模式,将模式改为Simple。

第三步:右键数据库,Tasks→Shrink→Files 。

第四步:收缩数据库日志,选择文件类型Log,并在Shrink action 中将文件收缩到给出的Minimum 值,这里的数据库因为是新建的没有数据,所以提供的Minimum 值为0MB,可以将红框3中的数字修改为0。

File type:选择所要收缩的是“数据库文件”还是“日志文件”。
Currebtly allocated space:数据库为该文件分配的大小,就是在磁盘上看到的文件大小。
Available free space:就是“当前分配的空间” 减去“实际使用的空间”。
Shrink action:
① Release unused space:将该文件中未使用的空间释放出来,数据在文件中不移动;
② Reorganize pages before releasing unused space:此选项可以将文件收缩到“指定大小”,并将数据重新组织。其最小值为数据库“实际使用的空间”;
③ Empty file by migrating the data to other files in the same filegroup:该选项很少用。
上述操作也可以使用T-SQL替代:
DBCC ShrinkFile(‘数据库名’, targetsize); /* 收缩数据库文件 */
DBCC ShrinkFile(‘数据库名_log’, targetsize); /* 收缩日志文件 */
Targetsize:单位为兆,必须为整数,DBCC SHRINKFILE 尝试将文件收缩到指定大小。
DBCC SHRINKFILE 不会将文件收缩到小于“实际使用的空间”大小,例如“分配空间”为10M,“实际使用空间”为6M,当制定targetsize为1时,则将该文件收缩到6M,不会将文件收缩到1M。
用本例中的数据库替换后如下:
DBCC ShrinkFile(‘TEST01’, 1); /* 收缩数据库文件 */
DBCC ShrinkFile(‘TEST01_log’, 1); /* 收缩日志文件 */
注意:如若磁盘空间已满,无法进行收缩数据库事务日志文件,可采取先分离出部分暂未使用的数据库,然后将MDF文件及LDF文件进行拷贝到其他空余盘,进行释放磁盘空间,待日志收缩后,再次将分离出的数据库文件进行附加。
分离数据库操作如下:
右击数据库,Task→Detach

点击OK

此时发现数据库列表中已经没有TEST01,说明数据库分离成功了。

附加数据库操作如下:
右击Databases,单击Attach

点击Add,添加数据库文件

选择需要添加的文件后点击OK

检查添加的文件无误后,点击OK

此时在数据库列表中可看到刚附件上去的数据库TEST01

若未显示TEST01,请刷新数据库列表

通过 Transact-Sql 进行日志收缩
执行如下命令:
USE [数据库名]
GO
ALTER DATABASE [数据库名] SET RECOVERY SIMPLE WITH NO_WAIT
GO
--设为简单模式
ALTER DATABASE [数据库名] SET RECOVERY SIMPLE
GO
USE [数据库名]
GO
DBCC SHRINKFILE (N'[log文件名]', [ targetsize], TRUNCATEONLY)
GO
USE [数据库名]
GO
ALTER DATABASE [数据库名] SET RECOVERY FULL WITH NO_WAIT
GO
--还原为完全模式
ALTER DATABASE [数据库名] SET RECOVERY FULL
GO
[数据库名]替换为具体数据库, [ targetsize]替换为收缩目标值。
替换为本例中的数据库修改如下:
USE TEST01
GO
ALTER DATABASE TEST01 SET RECOVERY SIMPLE WITH NO_WAIT
GO
--设为简单模式
ALTER DATABASE TEST01 SET RECOVERY SIMPLE
GO
USE TEST01
GO
DBCC SHRINKFILE (N'TEST01_log', 1, TRUNCATEONLY)
GO
USE TEST01
GO
ALTER DATABASE TEST01 SET RECOVERY FULL WITH NO_WAIT
GO
--还原为完全模式
ALTER DATABASE TEST01 SET RECOVERY FULL
GO
SQL Server 日志收缩方法的更多相关文章
- SQL Server日志清空方法
1.清空日志:DUMP TRANSACTION databasename WITH NO_LOG 2.截断事务日志:BACKUP LOG databasename WITH ...
- SQL Server 日志收缩
- SQL Server日志文件庞大收缩方法(实测好用)
原文:SQL Server日志文件庞大收缩方法(实测好用) 这两个命令连续执行,间隔时间越少越明显(可多次运行),直到达到效果 --截断 BACKUP LOG CloudMonitor TO DISK ...
- 清理SQL Server日志释放文件空间的终极方法
清理SQL Server日志释放文件空间的终极方法 转自:http://www.cnblogs.com/dudu/archive/2013/04/10/3011416.html [问题场景]有一个数 ...
- 收缩SQL Server日志不是那么简单
收缩SQL Server日志不是那么简单的(翻译) 原文地址:http://rusanu.com/2012/07/27/how-to-shrink-the-sql-server-log/ 说明:本 ...
- SQL Server无法收缩日志文件 2 因为逻辑日志文件的总数不能少于 2问题
SQL Server无法收缩日志文件 2 因为逻辑日志文件的总数不能少于 2问题 最近服务器执行收缩日志文件大小的job老是报错 我所用的一个批量收缩日志脚本 USE [master] GO /*** ...
- SQL Server 2008 收缩日志 清空删除大日志文件 转载
SQL Server 2008 收缩日志 清空删除大日志文件 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:(SQL2005)Ba ...
- SQL Server 2008 收缩日志
如果SQL SERVER 日志过大,比如,达到了几十个G,想一次性收缩的,直接执行下面命令即可: USE DATABASENAME; GO – Truncate the log by changing ...
- 解决Sql Server 日志满了,设置收缩
解决Sql Server 日志满了,设置收缩: --查看文件占用空间 . '文件大小(MB)',* from sysfiles; ALTER DATABASE SpyData SET RECOVERY ...
随机推荐
- PHPCMS V9.6.3的后台漏洞分析
PHPCMS V9.6.3后台的漏洞分析 1.利用文件包含创建任意文件getshell 漏洞文件:\phpcmsv9\phpcms\modules\block\block_admin.php 漏洞产生 ...
- SpringBoot2 整合OAuth2组件,模拟第三方授权访问
本文源码:GitHub·点这里 || GitEE·点这里 一.模式描述 授权服务 验证第三方服务的身份,验证邮箱用户的身份,记录和管理认证Token,为资源服务器提供Token校验.场景:第三方网站借 ...
- Abp vNext异常处理的缺陷/改造方案
吐槽Abp Vnext异常处理! 哎呀,是一个喷子 目前项目使用Abp VNext开发,免不了要全局处理异常.提示服务器异常信息. 1. Abp官方异常处理 Abp项目默认会启动内置的异常处理,默认不 ...
- os模块和os.path模块常用方法
今天和大家分享python内置模块中的os模块和os.path模块. 1.什么是模块呢? 在计算机开发过程中,代码越写越多,也就越来越难以维护,所以为了可维护的代码,我们会把函数进行分组,放在不同的文 ...
- Stream并行流详解
1.并行与并发的区别 在说到并行的时候,相信很多人都会想到并发的概念.那么并行和并发两者一字之差,有什么区别呢? 并行:多个任务在同一时间点发生,并由不同的cpu进行处理,不互相抢占资源 并行: 并发 ...
- 网易云解锁无版权PC&安卓版
前言 又是一个不太忙碌的周末 好吧,其实智能车有很多东西要做,其他也有很多东西要处理,但我想咸鱼一个早上. 闲着没事去吾爱破解上翻了翻,找找音乐软件,因为Listen 1有个音源挂了,应该是咪咕的,导 ...
- Selenium ActionChains、TouchAction方法
ActionChains和TouchAction可以用来模拟点击.双击.滑动等事件.ActionChains用于执行PC端的鼠标移动.按键.拖拽等事件:TouchActions用法与ActionCha ...
- Kubernetes官方java客户端之一:准备
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- light-rtc: 理念与实践
在与同行交流过程中,发现很多同行对 WebRTC 改动太多,导致无法升级 WebRTC 版本.而 WebRTC 开源社区的快速迭代,让他们感到欣喜又焦虑:开源社区的迭代效果,是不是超过了他们对 Web ...
- Alpha冲刺——代码规范与计划
这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1 这个作业要求在哪里 https://edu.cnblogs.com/campus/fz ...