SqlServer 数据库日志无法收缩处理过程

今天按常用方法收缩一个测试用的数据库日志,发现没法收缩!
dbcc sqlperf(logspace)


USE [dbname]
GO
 
ALTER DATABASE [dbname] SET RECOVERY SIMPLE WITH NO_WAIT
GO
DBCC SHRINKFILE (N'dbname_log' , 0, TRUNCATEONLY)
GO
DBCC SHRINKDATABASE(N'dbname' )
GO

日志大小还是一样。

 
DBCC OPENTRAN 查看是否打开的事务。发现有打开的事务,执行检查点再收缩,还是不行!
DBCC OPENTRAN (dbname) 
CHECKPOINT

参考:http://bbs.csdn.net/topics/350199751,将日志事务标志为已分发,再收缩,不行!

--日志中所有复制的事务将标记为已分发
EXEC sp_repldone @xactid = NULL,@xact_segno = NULL,@numtrans = 0,@time = 0,@reset = 1

  

现在查看虚拟日志文件,发现有很多,并且都处于活动状态

dbcc loginfo

 

最重要的语句竟然忘了,这可以查看日志空间的重复使用正在等待最后一个检查点的描述.。发现是REPLICATION

SELECT name,log_reuse_wait_desc FROM sys.databases where name='dbname'

这个数据库之前有作为事物同步过,但是都删除了。分发库也不存在了,现在竟然还有日志在等待?!

参考http://bbs.csdn.net/topics/390674731?page=1 ,执行删除所有复制对象。

--删除当前数据库中所有复制对象
EXEC sp_removedbreplication dbname

再看日志重用状态,正常了!看来有效!

在收缩数据库,查看已经收缩了!其他也恢复正常!
DBCC SHRINKFILE (N'dbname_log' , 0, TRUNCATEONLY)
GO
DBCC LOGINFO
GO
DBCC OPENTRAN (dbname) 
GO

此收缩方法,适用于发布过数据库订阅同步的情况,一般正常情况下,都可以收缩日志。

转自:https://blog.csdn.net/kk185800961/article/details/41865073

 

转载于:https://www.cnblogs.com/jiuge/p/9300359.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值