SQL server2008无法收缩日志

SQL server2008无法收缩日志,错误信息为:

1:由于最小日志空间要求,无法收缩日志文件

2:无法收缩日志文件 2 (XXX_log),因为该文件结尾的逻辑日志文件正在使用

描述:

用的是网上普遍有的收缩代码
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) 
GO
USE [master]
GO
ALTER DATABASE shujuku SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE shujuku SET RECOVERY FULL --还原为完全模式
GO
最后收缩失败,失败信息如下:
无法收缩日志文件 2 (shujuku_log),因为该文件结尾的逻辑日志文件正在使用
始终无法收缩成功!找了各种解决办法,试了各种SQL

但是首先有个事情我是很确定的。这个日志的增长是因为我创建了发布和订阅,并且在刚创建的几天都能正常的收缩,运行了几天后才发现突然不能收缩了。

最后我发现故障出现在订阅的客户机上,由于我只关注了发布机器的日志,忽略了订阅客户机的日志。发现订阅客户机的日志已经把客户机磁盘撑满了,造成发布和订阅无法正常完成。

因此发布机的事务一直未得到正常的执行,所以日志文件不能收缩。

解决:

1:在订阅客户机上收缩日志,并且创建一个定时任务。

2:当同步完成后,再收缩发布机,日志正常收缩成功。

时间: 2024-10-19 00:53:41

SQL server2008无法收缩日志的相关文章

SQL Server 2008 收缩日志

SQL SERVER 2008 中 BACKUP LOG WITH TRUNCATE_ONLY 已不再被支持,要收缩数据库日志,首先需要通过将数据库恢复模式设置为 SIMPLE 来截断该文件. 语句如下: USE DATABASENAME; GO-- Truncate the log by changing the database recovery model to SIMPLE. ALTER DATABASE DATABASENAME SET RECOVERY SIMPLE; GO-- Sh

SQL Server 2008 收缩日志 清空删除大日志文件

SQL2008 的收缩日志 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消: (SQL2005) BackupLog DNName with no_log go dump transaction DNName with no_log go USE DNName DBCC SHRINKFILE (2) Go --------------------------------------------------------------

Sql Server 2008收缩日志语句

--先查询DBName_Log在sys.database_files里的名称,此处暂用XXX代替 USE DBName GO SELECT file_id, name FROM sys.database_files; GO --真正的收缩语句.Sql Server 2008要先将模式改为简单模式,收缩后再改回完全模式. SE [master] GO ALTER DATABASE DBName SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE D

SQL Server2008清除数据库日志

m缪国瑞  11:10:17 --'这里的DNName_Log 如果不知道在sys.database_files里是什么名字的话,可以用以下注释的语句进行查询USE dochuanGOSELECT file_id, name FROM sys.database_files;GO --开始清理USE [master]GOALTER DATABASE dochuan SET RECOVERY SIMPLE WITH NO_WAITALTER DATABASE dochuan SET RECOVERY

SQL Server 2008 收缩日志(log)文件

1 USE TestDB; 2 GO 3 ALTER DATABASE TestDB 4 SET RECOVERY SIMPLE; --设置简单恢复模式 5 GO 6 7 DBCC SHRINKFILE (TestDB_Log, 1); 8 GO 9 10 ALTER DATABASE TestDB 11 SET RECOVERY FULL; --恢复为原模式 12 GO

SQL SERVER2008历史日志查询

有需要找个工具能够查询sql server历史操作日志,比如误删除,误操作等,网上搜了好多,没有一个靠谱的.当然排除自己写sql记录操作日志,俺不懂sql语言.有可用的工具求推荐,感谢. log explorer for sql server 支持到SQL2005,以上不支持. sql server自带的管理--sql server日志 记录的登录和错误日志 强大的sql server profiler 主要作为实时分析进程或排错来用,不能查询历史日志,除非一直开着 查询transaction

记录SQL Server2008日志文件损坏的恢复过程

记录SQL Server2008日志文件损坏的恢复过程: 环境:系统Windows Server2003 数据库SQL Server2008 故障原因:通过mstsc链接同一服务器时,用户界面不一致.决定重启服务器,未正确关闭应用程序的情况下(程序在访问数据库),导致数据库日志文件损坏,自然也就无法访问mdf文件!(都是微软自家的产品,重启服务器为什么不能检查数据库的状态,将数据库设置在安全状态后在重启呢??所以,要养成良好的习惯.关闭现有数据库链接,再重启服务器) 故障表现:无法访问数据文件,

Sql Server 2005 镜像后收缩日志

网站的一个数据库的日志文件已经到150个G的地步,数据文件才几十M,通过常规的操作去收缩日志: >数据库右键 → 任务 → 收缩 → 文件 , 在弹出的窗口中,文件类型选择"日志",收缩选项选择第二个,填一个小的数字 执行很快完成,但是日志文件大小并没有改变. 完成收缩有两种方式: * 分离数据库,删除日志文件,然后再附加数据库 * 修改数据库的恢复模式为**简单**,然后再重复最初的收缩数据库操作(因为事务并未截断,所以完整模式下收缩的大小有限),完成后再吧恢复模式改为**完整

为SQL Server数据库清空日志并收缩数据库

原文:为SQL Server数据库清空日志并收缩数据库 在SQL SERVER运行一段时间后,数据库的日志文件越来越大越来越大,有的时候我们为了减少日志文件的大小腾出存储空间,就要截断事务日志并收缩数据库,这样LOG文件占用的磁盘空间就被释放了. 要注意以下的任何一种操作都会使你丧失相应数据库的事务日志内容!操作之前一定要先备份数据库!! 对于SQL Server 2012之前的版本可以这样干: --达叔傻乐 (darwin.zuo@163.com) --打开查询分析器或者SSMS(SQL Se