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

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

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

 
 
  1. USE [dbname]
  2. GO
  3. ALTER DATABASE [dbname] SET RECOVERY SIMPLE WITH NO_WAIT
  4. GO
  5. DBCC SHRINKFILE (N'dbname_log' , 0, TRUNCATEONLY)
  6. GO
  7. DBCC SHRINKDATABASE(N'dbname' )
  8. GO

日志大小还是一样。

 
SqlServer 数据库日志无法收缩处理过程
SqlServer 数据库日志无法收缩处理过程
 
 
 
DBCC OPENTRAN 查看是否打开的事务。发现有打开的事务,执行检查点再收缩,还是不行!
  1. DBCC OPENTRAN (dbname)
  2. CHECKPOINT

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

 
 
参考:http://bbs.csdn.net/topics/350199751,将日志事务标志为已分发,再收缩,不行!
  1. --日志中所有复制的事务将标记为已分发
  2. EXEC sp_repldone @xactid = NULL,@xact_segno = NULL,@numtrans = 0,@time = 0,@reset = 1

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

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

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

 
最重要的语句竟然忘了,这可以查看日志空间的重复使用正在等待最后一个检查点的描述.。发现是REPLICATION
  1. SELECT name,log_reuse_wait_desc FROM sys.databases where name='dbname'

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

 
这个数据库之前有作为事物同步过,但是都删除了。分发库也不存在了,现在竟然还有日志在等待?!
 
 
参考http://bbs.csdn.net/topics/390674731?page=1 ,执行删除所有复制对象。
  1. --删除当前数据库中所有复制对象
  2. EXEC sp_removedbreplication dbname

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

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

在收缩数据库,查看已经收缩了!其他也恢复正常!

  1. DBCC SHRINKFILE (N'dbname_log' , 0, TRUNCATEONLY)
  2. GO
  3. DBCC LOGINFO
  4. GO
  5. DBCC OPENTRAN (dbname)
  6. GO
 

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

 
 
 
 
 
 http://blog.csdn.net/kk185800961/article/details/41865073
 
上一篇:纯css使用线性渐变实现滚动进度条(来自于微信前端早读课)


下一篇:【笔记】拉勾Java工程师高薪训练营-第一阶段 开源框架源码解析-模块一 持久层框架涉及实现及MyBatis源码分析-任务一:自定义持久层框架