SQL SERVER 2012断日志

有一个SQL2012库的日志达到了100G左右,平时开发人员根本没有做过事务日志备份,而磁盘空间已经快满了。所以,只能截断它。但是,由于从2K8以后,SQL SERVER好像不再提供 truncate_only和no_log功能了,而这个服务器的磁盘空间也不够。所以,只能采用切换到简单恢复模式方式,来先将已经完成的事务truncate了。然后shrik日志文件来回收空间了。

--查询事务日志的状态,可以看到是LOG_BACKUP状态,说明需要备份日志。

--http://msdn.microsoft.com/zh-cn/library/ms190925.aspx#Truncation

select name,log_reuse_wait_desc from sys.databases

--查看LOG使用情况

dbcc sqlperf(LOGSPACE)--已经使用的百分比

dbcc loginfo --查看status列基本上都是2表示不可以重用,只有0时候才可以重新使用。

--切换到简单恢复模式

alter database test set recovery simple with no_wait--再次使用dbcc loginfo 查看,可以看到很多status原来是2的已经变为0.

--切回到FULL

alter database test set FULL simple with no_wait

--这个时候你可以试着插入数据,观看status的值。你会发现它虽然恢复模型已经切回FULL,但是,它的事务日志使用方式还是SIMPLE模式,也就是还可以重新使用已经提交日志空间。这个时候,我们只有做一个全库备份才可以真正切回FULL模式。(记得好像如果新建一个数据库也有这个情况。只有建完以后,马上做一个全库备份以后,才是真正的FULL模式。)

--这个时候,如果你想通过shrink日志文件来缩小文件会发现不起做用。只有你做完以后日志备份后,再去shrik才可以功能。

backup log test to disk='d:\test.log'

DBCC SHRINKFILE (N'Test_log' , 0, TRUNCATEONLY)

 参考资料:

简介数据库日志文件的增长

SQL Server 何时将“脏页”回写到硬盘

转载于:https://www.cnblogs.com/superunusa/p/4069739.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值