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

时间: 2024-08-02 02:50:47

SqlServer 数据库日志无法收缩处理过程的相关文章

数据库日志文件(收缩管理)

sqlserver数据库的日志文件其实是由很多个逻辑上的日志文件组成,我们可以通过命令看一下数据库日志文件 ?可以看到的是sqlserver数据库日志文件是由很多文件组成的,当数据库日志文件已满的时候,自动增长就会生成新的文件,这些文件叫做VLF(虚拟日志文件),所以说在这个层面上来说,我们可以简单的把数据库日志理解为一列火车,一节一节的车厢理解为数据库的虚拟日志文件,当然如果不够存的下事务日志的时候,就要扩充,就是加一个火车厢. 所以说数据库事务日志其实是由很多个独立的虚拟事务日志文件组成的,

数据库日志文件收缩

项目所使用的数据库通过备份还原来的,导致日志文件很大,占用了很大的空间,在网上搜索了日志收缩的信息,整理了下. --清空日志 DUMP  TRANSACTION  EWABOQDB  WITH NO_LOG --截断事务日志 BACKUP LOG EWABOQDB WITH NO_LOG --收缩日志 右键要收缩的数据库--任务--收缩--文件--文件类型选择日志--收缩方式中选择收缩至XXM输入确定 以上已完成日志文件的收缩,日志文件所占空间已减少 下面是对日志文件的增长规则进行了个限制 右键

sqlserver 数据库日志收缩失败解决办法

1.数据库-收缩-日志-可以收缩百分之90多,但是收缩完,容量并没有减少.查资料有可能日志是被占用了,暂时无法收缩: 2.select   log_reuse_wait_desc  from   sys.databases  where   name ='HIS_CDC'  查询出来是replication,想到之前开启过cdc,后来不用,只是禁用了作业,cdc忘记禁用了: a.先查询哪些库开启了cdc  select * from sys.databases where is_cdc_enab

数据库日志无法收缩

在论坛里面经常有人遇到,数据库日志文件无法收缩的问题.这里详细介绍下这个问题怎么解决. 处理 遇到日志文件无法收缩的问题,第一步肯定是先运行下面的命令: SELECT name,log_reuse_wait_desc FROM sys.databases where name='dbname' 对应的log_reuse_wait_desc 说明如下图:

SQLServer数据库如何收缩日志空间?

SQLServer数据库如何收缩日志空间 说明:  SQLServer数据库日志会越来越大,尤其是服务器空间紧张时,你不得不收缩日志来放出部分空间,下面说方法. 版本:  SQLserver 2008 R2 方法: 新建查询,执行脚本.脚本如下 注意 红色部分需要修改成相应的数据库名. 绿色部分需要修改成相应数据库日志名称 USE [USRINF]GOALTER DATABASE USRINF SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE US

数据库日志收缩大小

/*--特别注意 请按步骤进行,未进行前面的步骤,请不要做后面的步骤     否则可能损坏你的数据库.     --*/ 1.清空日志     DUMP     TRANSACTION     库名     WITH     NO_LOG 2.截断事务日志:     BACKUP   LOG   数据库名   WITH   NO_LOG 3.收缩数据库文件(如果不压缩,数据库的文件不会减小     企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件     --选择日志文件

SQLSERVER数据库死锁与优化杂谈

死锁杂谈 当数据库死锁时,SqlServer会释放一个优先级较低的锁,让另一个事务运行:所以,即时去捕捉数据库死锁,是挺不容易的. 如果,数据库死锁比较长时间,那么死锁是可以被捕捉的. 可以用SqlServer活动监视器来查看,哪些进程锁了数据库. 首先打开SqlServer活动监视器,然后可以看到,界面里有进程,查看资源,数据文件I/O,最近消耗大量资源的查询四项. 四项显示内容如下: 进程:在进程里可以看到哪些进程被阻塞,查看属性[阻塞者]可以看到,[阻塞者]的会话ID. 等待资源:等待资源

SQL Server 2008删除或压缩数据库日志的方法

2010-09-20 20:15 由 于数据库日志增长被设置为“无限制”,所以时间一长日志文件必然会很大,一个400G的数据库居然有600G的LOG文件,严重占用了磁盘空间.由于主要 是做OLAP,所以数据库本身不会有大变动,所以日志也就没有多少作用了,因此想办法把数据库日志文件收缩到很小或者删除. 网 上搜索相关解决方案后,得到的答案丰富多彩,但是真正管用的方案并不多,这里分享一个csdn上找到的方法.这个方法讲述了SQL Server 2005和SQL Server 2008在收缩数据库日志

(转)对SQLSERVER数据库事务日志的疑问

本文转载自桦仔的博客http://www.cnblogs.com/lyhabc/archive/2013/06/10/3130856.html 对SQLSERVER数据库事务日志的疑问 摸不透SQLSERVER了 实验环境:SQLSERVER2005 SP4,Windows7 本来没什么心情写文章,反正没人看,关于我文章中提到的问题,有些可以从文章结尾的MSDN补充那里找到答案,而有些还没有答案 根据CSDN博客的这篇文章介绍,大家可以先看一下,然后再继续往下看,因为下面会引用到CSDN博客里的