[SQL Server] 日志管理(待续)

本文详细介绍了 SQL Server 数据库日志管理的关键步骤,包括备份事务日志、截断已完成事务日志以及收缩日志文件大小。特别强调了在数据库运行状态下的高效管理策略,以及创建多个日志文件以确保自动截断和收缩操作的可行性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 --备份事务日志 (自上一次备份以来,至当前的已完成的事务的日志)

backup log MyDBName to disk='F:/dbbak/GamePoint/MyDBName_log_2010052709.bak';

 

--截断日志(截断掉当前的已完成的事务的日志), SQL Server 2005, 2008没有这个选项.

backup log MyDBName with no_Log;

 

--收缩日志(至1M,第一个参数为日志文件名,而不是物理文件名。如果日志还在使用,会延迟收缩)

dbcc shrinkfile (adventureworks_log, 1); --(查询文件名select name from sys.database_files)

go

 

 

一般来讲backup log后,会自动截断已完成(又称未活动)的事务日志,并且收缩该文件的大小。但如果你的数据库一直是在运行当中,且只有一个日志文件的时候,备份日志后,它是无法收缩该文件的大小(联机帮助上是说延迟收缩,实际上不知它延迟到什么时候),须backup log MyDBName with no_Log; 才能立即收缩文件大小。

 

因此,创建数据库时,建议分成2个日志文件,这样只要backup log后,至少会有一个日志文件会被截断并收缩到“已设定的日志文件最小值”。

 

  

 

-- 以下在sql server 2008下,快速收缩日志文件大小的方法。仍然建议数据库中多个日志文件,通过备份日志来自动截断和收缩日志。

 

use adventureworks;

go

-- truncate the log by changing the database recovery model to simple.

alter database adventureworks

set recovery simple;

go

-- shrink the truncated log file to 1 mb.

dbcc shrinkfile (adventureworks_log, 1); --(查询文件名select name from sys.database_files)

go

-- reset the database recovery model.

alter database adventureworks

set recovery full;

go

 

 

恢复事务日志, 待续...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值