如何截断SQL Server2008+事务日志空间

SQL数据库事务日志记录数据库的任何更改,用户可回滚事务日志来恢复数据,但随着数据库使用时间变长,日志文件也会变得很大。

若要避免数据库的事务日志被填满,例行备份至关重要。做了日志备份后,会释放不活跃的VLF,增加日志的可用空间。但默认情况下备份日志,其日志文件的大小并未变化,如下图

备份前,总大小24.13MB

备份后,总大小仍然为24.13MB,但已用空间占比从93.1%降至11.0%

也就是,已使用日志空间是减小了,但未使用日志空间并未释放。其实,如果磁盘空间足够的话,可以不用收缩空间

那如果需要释放空间以节约磁盘空间,怎么解决?

如果要收缩数据库日志大小,则需要截断事务日志

SQL SERVER 2008 +环境下不再支持以下命令(SQL 2005下可用)

BACKUP LOG 数据库名 WITH TRUNCATE_ONLY 或

BACKUP LOG 数据库名 WITH NO_LOG

要收缩数据库日志,首先需要通过将数据库恢复模式设置为 Simple 来截断该文件。

USE DATABASENAME;

GO

ALTER DATABASE DATABASENAME SET RECOVERY SIMPLE; //更改数据库的恢复模式为简单

GO

DBCC SHRINKFILE (DATABASENAME_Log, 5);  //手工压缩日志文件至5MB

GO

ALTER DATABASE DATABASENAME SET RECOVERY FULL;  //将数据库的恢复模式改回来

GO

下面是测试环境的效果图

截断前

截断后

说明:

1.以上操作也可以通过图形界面来完成;

2.如何判断收缩后大小,可以通过下列命令查看

DBCC Sqlperf(Logspace)

3.日志截断后建议立即做一次完整备份

时间: 2024-10-29 14:13:08

如何截断SQL Server2008+事务日志空间的相关文章

Sql Server 事务日志

Sql Server事务日志文件是数据库文件的重要组成部分,事务日志主要用来存放数据库的修改记录.数据库为了得到更高的写入效率和性能,同时保证ACID特性,数据在写入时,会将更新先写入事务日志,因为事务日志是连写的,所以写事务会比较快.简单来说,顺序写入时,磁盘的磁头会保持在一定的区域内连续写入,而数据写入数据文件时,有随机性,磁盘的磁头移动消耗的时间要比数据写入日志文件时多. Sql Server对于事务日志文件的管理,是将日志文件在逻辑上分成若干个文件(VLFS),方便管理. 创建一个1M的

SQL SERVER2008历史日志查询

有需要找个工具能够查询sql server历史操作日志,比如误删除,误操作等,网上搜了好多,没有一个靠谱的.当然排除自己写sql记录操作日志,俺不懂sql语言.有可用的工具求推荐,感谢. log explorer for sql server 支持到SQL2005,以上不支持. sql server自带的管理--sql server日志 记录的登录和错误日志 强大的sql server profiler 主要作为实时分析进程或排错来用,不能查询历史日志,除非一直开着 查询transaction

XenDesktop 7 SQL Mirror事务日志增长量的计算

对其事务日志的增长量有一下几方面来进行计算: DDC心跳服务信息 站点心跳服务信息 虚拟机工作心跳服务信息 DDC心跳服务信息 每一台XD7 的DDC服务器都有10个WindowsService每隔30秒就进行一次心跳连接,以证明DDC服务器还活动并且正在运行. 每一个心跳是606 bytes,所以每一台DDC的心跳字节是6060bytes,一个小时是120个心跳,那么每一台DDC一个小时的心跳字节就是727200 bytes. 站点心跳服务信息 有一个用户的登录请求等会话信息是由一台DDC来进

SQL Server事务日志分析

SQL Server事务日志分析 fn_dblog()和fn_dump_dblog()函数介绍 SQL Server有两个未公开的函数fn_dblog()和fn_dump_dblog()非常有用并且提供的信息量很大.你可以使用这些函数来获取100多列大量的有用信息. fn_dblog()用于分析数据库当前的事务日志文件,它需要两个参数,分别为事务开始LSN和结束LSN,默认为NULL,表示返回事务日志文件的所有日志记录. 例如: SELECT * FROM fn_dblog(null,null)

Sql Server 事务日志(三)

SQL server的日志文件会随着数据修改的增加而变大,在处理日志文件时,我们常用的方式是将日志截断,并收缩. Backup log databasename to disk='' dbcc shrinkfile(databasename_log) 当然,如果磁盘空间紧张,可以将恢复模式改成‘simple’的方式使日志截断,然后再收缩日志 alter database test set recovery simple; DBCC shrinkfile(test_log) alter datab

人人都是 DBA(VI)SQL Server 事务日志

SQL Server 的数据库引擎通过事务服务(Transaction Services)提供事务的 ACID 属性支持.ACID 属性包括: 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability) 事务日志(Transaction Log) 事务日志(Transaction Log)存储的是对数据库所做的更改信息,让 SQL Server 有机会恢复数据库.而恢复(Recovery)的过程就是使数据文件与日志保持一致的过程.

翻译:SQL Server事务日志管理的阶段,1级:事务日志概述

原文链接:http://www.sqlservercentral.com/articles/Stairway+Series/73775/ 原文作者: Tony Davis, 2013/10/30 (第一次出版: 2011/06/17) 该系列 本文是SQL Server中"Stairway系列:事务日志管理的阶梯"的一部分 当事情进展顺利的时候,没有必要特别意识到事务日志的作用或工作原理. 你只需要确信每个数据库都有正确的备份机制. 当事情出错时,对事务日志的理解对于采取纠正措施是非常

SQL SERVER2008 数据库日志文件的收缩方法

最近公司的数据库随着业务量的增多,日志文件巨大(超过300G),造成磁盘空间不够用,进而后来的访问数据库请求无法访问. 网上类似的方法也很多,但不可行,如下是我实践过,可行的,将日志文件收缩至任意指定大小的方法: 第一步: 在SQL SERVER Management Studio 中右击数据库选择"属性"--->"选项",将恢复模式由默认的"完整"改为"简单". 第二步:再次右键选择数据库的"任务"

SQL Server2008清理日志方法.sql

最近客户反映一个问题,说是应用服务器写数据库失败,一开始以为是应用服务器的问题,后来从反馈的数据库运行日志来看,是由于数据库的事物日志满了,导致无法再写入数据. 从这次的问题解决得出以下结论: 1.数据库的数据文件和事物日志文件不要按百分比自动扩充,而应该是按MB增长.比如每次增长100MB~200MB 2.要定期的清理数据库的事物日志文件 3.一旦出现和数据库相关的问题,应该第一时间去查看数据库的运行日志 下面给出sqlserver 2008清理事物日志的方法,建议将其做成定时作业,而不用每次