数据库日志无法收缩

pbsh 2009-09-21 10:42:22
今天忽然发现一个数据库日志文件非常大,但是这个数据库是简单恢复模型,而且启用了自动收缩。
我使用Backup LOG 和With No_log选项、DBCC Shrinkdatabase命令后,数据库日志反而增大了。
观察日志文件的使用情况,发现已使用空间为0,未使用空间100%。
反复几次之后,数据库日志文件越来越大。
根据这个库的使用情况,判断可能跟这个库上存在数据库复制有关。
我在数据库复制的编辑界面,手动取消所有的复制对象后,备份数据库,收缩,数据库日志依然越来越大。
后来使用sp_removedbreplication命令强制清除了所有复制对象,然后使用Backup LOG 和With No_log选项、DBCC Shrinkdatabase命令,这次日志文件被收缩掉了。
但是我所建立的数据库复制也被彻底清除了,但是订阅仍然存在。
从微软的论坛查阅到一些资料,通常如果你设置过数据库复制或发布,而后来设置失败并没有启用,可能会导致这个问题,你看不到跟复制有关的内容,但是在数据库里却存在这样的东西,于是日志被它堵住了,这成了一个永远无法完成的命令,所以后续的日志都无法截断。
实际情况是我的复制对象会定期进行发布,用以同步数据。
现在强制清除了复职,需要重新进行配置,对日常工作影响很大。
有没有其他方法,即不清除复制,又能收缩数据库日志?
...全文
451 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
7761098 2009-09-22
  • 打赏
  • 举报
回复
学习一下,其实定期整理log就好了,这种情况没遇到
pbsh 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 soft_wsx 的回复:]
引用 25 楼 pbsh 的回复:
难道要我打电话给MS咨询,T_T
顶!打给比尔!
[/Quote]

一个license只能问一个问题,囧
pbsh 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 navy887 的回复:]
我这里在发布数据库,每周都要清理事务日志,收缩数据库的,好像没发生楼主的情况啊。
[/Quote]

目前不是很清楚原因
navy887 2009-09-22
  • 打赏
  • 举报
回复
我这里在发布数据库,每周都要清理事务日志,收缩数据库的,好像没发生楼主的情况啊。
soft_wsx 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 pbsh 的回复:]
难道要我打电话给MS咨询,T_T
[/Quote]顶!打给比尔!
pbsh 2009-09-22
  • 打赏
  • 举报
回复
难道要我打电话给MS咨询,T_T
pbsh 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 7761098 的回复:]
学习一下,其实定期整理log就好了,这种情况没遇到
[/Quote]

这个库是简单模型,自动收缩,本来没在意他的日志,偶然发现日志文件暴大。
pbsh 2009-09-21
  • 打赏
  • 举报
回复
帮顶有分
昵称被占用了 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wujinjian2008n 的回复:]
引用 4 楼 htl258 的回复:
把数据库分离,移走或删除日志,再附加数据库,SQL会自动生成日志文件。


最有效的方法
[/Quote]
这是个有危险的动作,要谨慎使用
pbsh 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 htl258 的回复:]
把数据库分离,移走或删除日志,再附加数据库,SQL会自动生成日志文件。
[/Quote]

我认为这种方式危险系数过高,而且对于多文件组或多文件的数据库存在困难。
fuxiaoyang13 2009-09-21
  • 打赏
  • 举报
回复
引用 4 楼 htl258 的回复:
把数据库分离,移走或删除日志,再附加数据库,SQL会自动生成日志文件。

这是最后的办法!
wujinjian2008n 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 htl258 的回复:]
把数据库分离,移走或删除日志,再附加数据库,SQL会自动生成日志文件。
[/Quote]

最有效的方法
pbsh 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 htl258 的回复:]
引用 6 楼 pbsh 的回复:
引用 4 楼 htl258 的回复:
把数据库分离,移走或删除日志,再附加数据库,SQL会自动生成日志文件。

这种方法我考虑过,只不过担心会对数据库造成损坏,如果附加不上或置疑了就不好玩了。
因为我使用DBCC Shrinkdatabase命令的时候提示所有的日志文件都正在被使用,无法进行收缩。

以前我也遇到过跟你相同的情况,我用分离附加解决的。
[/Quote]

分离和附加应该不会导致失去去复制设置了吧。
pbsh 2009-09-21
  • 打赏
  • 举报
回复
谢谢楼上各位的回复。
不过希望曾经遇到过这种问题的达人指点一下,这些常用的命令就不用了。
htl258_Tony 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 pbsh 的回复:]
引用 4 楼 htl258 的回复:
把数据库分离,移走或删除日志,再附加数据库,SQL会自动生成日志文件。

这种方法我考虑过,只不过担心会对数据库造成损坏,如果附加不上或置疑了就不好玩了。
因为我使用DBCC Shrinkdatabase命令的时候提示所有的日志文件都正在被使用,无法进行收缩。
[/Quote]
以前我也遇到过跟你相同的情况,我用分离附加解决的。
--小F-- 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 pbsh 的回复:]
引用 4 楼 htl258 的回复:
把数据库分离,移走或删除日志,再附加数据库,SQL会自动生成日志文件。

这种方法我考虑过,只不过担心会对数据库造成损坏,如果附加不上或置疑了就不好玩了。
因为我使用DBCC Shrinkdatabase命令的时候提示所有的日志文件都正在被使用,无法进行收缩。
[/Quote]
...
pbsh 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 htl258 的回复:]
把数据库分离,移走或删除日志,再附加数据库,SQL会自动生成日志文件。
[/Quote]
这种方法我考虑过,只不过担心会对数据库造成损坏,如果附加不上或置疑了就不好玩了。
因为我使用DBCC Shrinkdatabase命令的时候提示所有的日志文件都正在被使用,无法进行收缩。
soft_wsx 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 htl258 的回复:]
把数据库分离,移走或删除日志,再附加数据库,SQL会自动生成日志文件。
[/Quote]
--备份数据库
BACKUP DATABASE testdb TO DISK='d:\data\testdb20070906.bak'
--清空日志
DUMP TRANSACTION testdb WITH NO_LOG
--截断事务日志
BACKUP LOG testdb WITH NO_LOG
--收缩数据库
DBCC SHRINKDATABASE(testdb)
--设置自动收缩
EXEC SP_DBOPTION testdb,AUTOSHRINK,TRUE

试试看可以不
htl258_Tony 2009-09-21
  • 打赏
  • 举报
回复
把数据库分离,移走或删除日志,再附加数据库,SQL会自动生成日志文件。
htl258_Tony 2009-09-21
  • 打赏
  • 举报
回复
分离,移志或删除日志,附加。
加载更多回复(11)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧