如何清理SQL Server日志释放文件空间

【问题场景】有一个数据库,它的名字叫CNBlogsText,日志文件霸占了23G硬盘空间,而事务日志已经截断(Truncate),实际日志内容很小,1G都不到。23G的空间只放1G不到的日志,就如同用一栋别墅养一只宠物,太奢侈了!秉承中华民族勤俭节约的美德,这种奢侈是绝对不允许的,必须要释放日志文件霸占的多余空间。

但是,无论怎么收缩(Shrink)日志文件,空间就是不能释放,总是出现错误:

Cannot shrink log file 2 (CNBlogsText_log) because of minimum log space required.

之前解决过类似的问题,也写过一篇博客-SQL Server 2008事务日志清理,当时采用的最终解决方法是:

将恢复模式由完整(Full)改为简单(Simple)

收缩(Shrink)日志文件

将恢复模式由简单(Simple)改为完整(Full)

一直以为这就是终极方法,但是竟然没能终结这次遇到的问题。

经过不懈的努力,终于找到真正的终极方法:

1. Detach数据库(Detach之前一定要屏蔽所有对这个数据库的写入操作,这是血的教训)

2. 删除或重命名日志文件

3. Attach数据库,这时会提示找不到日志文件

4. 移除(Remove)这个找不到的日志文件,然后点击Ok进行Attach,SQL Server会在数据文件所在的文件夹自动创建一个新的日志文件完成Attach。

5. 如果日志文件需要存放在另外的路径,要再通过Detach/Attach进行日志文件的移动操作。

Detach数据库

将日志文件移动至新的位置

Attach数据库,修改日志文件的路径并完成Attach

该终极方法的弊端是在操作期间,被操作的数据库不能被正常访问。

这就是我找到的清理SQL Server日志释放文件空间的终极方法。也许有经验的你觉得这是常识,我才不管呢,只要能秒杀实际问题,就值得分享!

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/SQLServer/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, 日志
, 文件
, 方法
, 空间
, Attach
, 日志清理
, 如何Shrink
, 清理日志
detach()
sql server 日志清理、sqlserver 清理日志、sqlserver 释放表空间、sql server 释放空间、sqlserver 释放空间,以便于您获取更多的相关知识。

时间: 2024-09-14 01:11:41

如何清理SQL Server日志释放文件空间的相关文章

《SQL Server企业级平台管理实践》读书笔记——SQL Server中数据文件空间使用与管理

原文:<SQL Server企业级平台管理实践>读书笔记--SQL Server中数据文件空间使用与管理 1.表和索引存储结构 在SQL Server2005以前,一个表格是以一个B树或者一个堆(heap)存放的.每个B树或者堆,在sysindexes里面都有一条记录相对应.SQL Server2005以后,引入了分区表的概念(Table Partition),在存储组织上,现有的分区基本上替代了原来表格的概念,原先表的概念成为了一个逻辑概念.一个分区就是一个B树或者一个堆.而一张表格则是一个

SQL SERVER日志链简介

先说清楚这些概念吧 SQLSERVER只有日志链,备份记录(有些人也叫备份链)本人觉得叫备份记录更合适 下面三个东西说的都是同一样东西 备份集=备份记录=备份链 备份集:比如备份的集合,比如有对一个数据库的完备1.差备.日备1.完备2.日备2,这些数据库的备份的集合就 是备份集 不过我更喜欢叫备份记录 备份记录实际上指 SELECT * FROM [msdb].[dbo].[backupset] 截断日志跟日志链断裂是否是同一样东西? 截断日志跟日志链断裂不是同一样东西 什么是日志链 其实大家可

SQL Server日志文件庞大收缩方法(实测好用)

原文:SQL Server日志文件庞大收缩方法(实测好用) 这两个命令连续执行,间隔时间越少越明显(可多次运行),直到达到效果 --截断 BACKUP LOG CloudMonitor TO DISK='NUL' --收缩 DBCC SHRINKFILE('CloudMonitor_log')   以后就可以采用常规的定期备份日志(比如一小时一次)来防止日志文件无限增长. SQL Server日志文件庞大收缩并非易事, 文章中提到: 由于首日志.尾日志和空间重复利用的原因,当备份日志后产生了日志

SQL SERVER日志清除的两种方法

server SQL SERVER日志清除的两种方法方法一 一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大1.设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项--&g

解决SQL Server日志文件损坏严重的问题

如果服务器出现Raid故障,在数据基本恢复成功后,发现其中的一个Sql Server日志文件(扩展名LDF)损坏严重,我们可以通过下面的操作使数据全部恢复. 首先新建一个同名的数据库,然后再停掉sql server服务,用原数据库的数据文件覆盖掉这个新建的数据库文件,重启sql server服务.打开企业管理器,该数据库显示"置疑",在查询分析器中执行下面的语句: USE MASTER GO SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH

使用SQL Server日志转移实现数据库的高可用性

[导读]本文主要针对SQL Server 2000介绍如何使用SQL Server日志转移实现数据库的高可用性. 集群是一种实现高可用性的有效解决方案,有时它会适得其反.而且,它还非常昂贵.因此,数据库管理员可使用日志转移代替集群来提供较高的可用性. 日志转移是这样一种处理过程,它能将某一数据库中的事务日志文件依次转存到备份的数据库中,进而为这一数据库创建一个"近乎"热备份.SQL Server 2000的数据库引擎中设置了日志转移功能,并在其中进行处理.所以它会自动完成复原到备份服务

SQL Server日志恢复还原数据库几种方法

SQL Server日志恢复 通过日志还原,最重要的是: 1.必须有一个完整的备份,且这个备份必须是在修改.删除数据之前做的. 2.在更新.删除数据之后,做日志备份,该log备份将用于还原之前的数据  下面步骤的目的:还原被删除的表 在SQL Server Management可视化操作步骤: 1.创建数据库并完整备份:  代码如下 复制代码 --创建测试数据库 CREATE DATABASE Db GO --对数据库进行备份 BACKUP DATABASE Db TO DISK='c:/db.

如何缩小SQL SERVER日志文件(1/2)

如何缩小sql server日志文件 可以将日志文件缩小到自己想要的大小了.把代码copy到查询分析器里,,然后修改其中的3个参数(数据库教程名,日志文件名,和目标日志文件的大小),运行即可(我已经用过多次了) ----- set nocount on declare @logicalfilename sysname, @maxminutes int, @newsize int use marias -- 要操作的数据库名 select @logicalfilename = 'marias_lo

SQL Server日志清空方法 .

SQL Server日志清空方法 . 查询分析器中顺序执行以下三步,其中   databasename   为你的数据库教程文件名 1.清空日志:DUMP   TRANSACTION   databasename   WITH   NO_LOG   2.截断事务日志:BACKUP   LOG   databasename   WITH   NO_LOG   3.收缩数据库:DBCC   SHRINKDATABASE(databasename)   --//////////////////////