SQL server2008无法收缩日志

chengdudeyun 2016-11-03 10:09:21
用的是网上普遍有的收缩代码
USE [master]
GO
ALTER DATABASE shujuku SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE shujuku SET RECOVERY SIMPLE --简单模式
GO
USE shujuku
GO
DBCC SHRINKFILE (N'shujuku_Log' , 11, TRUNCATEONLY)

GO


USE [master]
GO
ALTER DATABASE shujuku SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE shujuku SET RECOVERY FULL --还原为完全模式
GO
最后收缩失败,失败信息如下:
无法收缩日志文件 2 (shujuku_log),因为该文件结尾的逻辑日志文件正在使用

始终无法收缩成功!服务器一直没压缩过日志 导致盘满了,最后没办法扩展了磁盘才临时解决了问题!
问下各位怎么在不中断业务的情况下,实现日志收缩!网上了查了很多,都是提供压缩方法的,但没有提及这个问题的。CSDN上以前有人发过这个问题。但好像也没人能给出解决方案,最后好像楼主把数据库分离后重新附加!但这样好像并不怎么妥当!
...全文
645 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
言语之间 2019-12-19
  • 打赏
  • 举报
回复
我是用这种方法收缩日志的==可用:https://blog.csdn.net/weixin_43558566/article/details/100578084
--小F-- 2016-11-03
  • 打赏
  • 举报
回复
我猜测是你的日志传送出了问题,还在BACK UP LPG。。然而你的副本服务器已经宕机了。导致主服务器的日志没有传送过去
--小F-- 2016-11-03
  • 打赏
  • 举报
回复
其实报错已经很明显了。你的日志正在使用,无法截断,所以无法压缩。 你的服务器是不是有什么高可用性的一些东西,比如镜像,日志传送这些。 用这个语句查看一下日志状态: select log_reuse_wait_desc from sys.databases where name='DBName'
中国风 2016-11-03
  • 打赏
  • 举报
回复
这类情况,你重启一下SQL 服务后看看是否正常
chengdudeyun 2016-11-03
  • 打赏
  • 举报
回复
感谢版主的帮忙。还是fredrickhu说的对,原来是原来的数据管理员做过 订阅发布的同步操作!另一台服务器已经宕机了!把另外一台服务器的服务停掉后,再用上面的语句收缩就可以了。非常感谢fredrickhu。结贴。。。。
中国风 2016-11-03
  • 打赏
  • 举报
回复
是不是正在执行 数据操作由于空间不足没有完成事务,重启后又回滚不了所产生操作,在日志所在硬盘腾出空间,再做收缩动作 ----------- 另一解决方法分离数据库,把日志文件删除或备份到其它盘符,只附加数据库文件,生成新日志文件
yaoyuandejia 2016-11-03
  • 打赏
  • 举报
回复
一般不会出问题,如果出问题可能原因如下: 1,你的数据库服务器可能在非正常情况下,关机并重启过,会导致一部分文件一直被占用 2,如果你是手动收缩数据库,有时会失败,尝试把当前数据库的数据库类别改成“简单模式”,再尝试收缩 3,如果是你复制数据中的读取机,像你说的,没清理过,直接把硬盘占满了,导致sqlserver日志无处写,也会出问题
--小F-- 2016-11-03
  • 打赏
  • 举报
回复
肯定是有什么复制的动作啊 不然怎么会出现REPLICATION 你运行这个 EXEC sp_removedbreplication dbname 然后再压缩看有没有效果
chengdudeyun 2016-11-03
  • 打赏
  • 举报
回复
复制应该是没有 SQL一直在这台服务器 也没改过计算机名 是用的阿里云的服务器
chengdudeyun 2016-11-03
  • 打赏
  • 举报
回复
引用 7 楼 fredrickhu 的回复:
总之你的目的就是能截断日志,要么你做一个日志备份也行。


做一个日志备份?然后直接删除那个日志??
--小F-- 2016-11-03
  • 打赏
  • 举报
回复
总之你的目的就是能截断日志,要么你做一个日志备份也行。
--小F-- 2016-11-03
  • 打赏
  • 举报
回复
引用 4 楼 chengdudeyun 的回复:
[quote=引用 2 楼 fredrickhu 的回复:] 其实报错已经很明显了。你的日志正在使用,无法截断,所以无法压缩。 你的服务器是不是有什么高可用性的一些东西,比如镜像,日志传送这些。 用这个语句查看一下日志状态: select log_reuse_wait_desc from sys.databases where name='DBName'
"REPLICATION" 还有我只有一台服务器,这天服务器只放这个数据库做服务用 没有什么副本服务器之类的 [/quote] 这个是复制啊 你的机器以前做过复制。或者是修改过计算机名,而复制没有删除掉
chengdudeyun 2016-11-03
  • 打赏
  • 举报
回复
引用 1 楼 roy_88 的回复:
这类情况,你重启一下SQL 服务后看看是否正常


连服务器都重启过
chengdudeyun 2016-11-03
  • 打赏
  • 举报
回复
引用 2 楼 fredrickhu 的回复:
其实报错已经很明显了。你的日志正在使用,无法截断,所以无法压缩。 你的服务器是不是有什么高可用性的一些东西,比如镜像,日志传送这些。 用这个语句查看一下日志状态: select log_reuse_wait_desc from sys.databases where name='DBName'
"REPLICATION" 还有我只有一台服务器,这天服务器只放这个数据库做服务用 没有什么副本服务器之类的

34,571

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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