我已经有一个日志文件已经增长到32gig,并填补了我的硬盘驱动器。 所以我做了一个事务日志备份,现在当我做“DBCC SQLPERF(LOGSPACE)”它说我的日志文件的99%是空的空间,这是伟大的:
DBCC SQLPERF ( LOGSPACE ) Database Name Log Size (MB) Log Space Used (%) Status abc 32140.02 0.3069714 0
现在我想缩小文件(它应该只是几个megs !!!),所以我这样做:
DBCC SHRINKFILE ( abc_log )
在SSMS的查询结果中,我得到以下内容:
Results tab: DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages 14 2 4113923 128 4113920 128
在“消息”标签中,这一小段信息:
Cannot shrink log file 2 (abc_log) because all logical log files are in use. (1 row(s) affected) DBCC execution completed. If DBCC printed error messages, contact your system administrator.
这是怎么回事?
等待安静的时间,并做一个事务日志备份,然后立即做收缩。
你没有提到你的SQL Server版本。 根据“SQL Server Intenals” ,“(在7.0中)…物理收缩只能从日志的末尾进行,而活动部分永远不会收缩。为了纠正这种情况,必须在input一些虚拟事务之后截断日志以强制日志的活动部分移动到文件的开头“。 后来的版本应该为你做。
半小时后的收缩可能只是自动收缩(你是否打开了这个选项?),每30分钟一次。
我是一个糟糕的SQLpipe理员,通常只是将数据库更改为简单恢复模式,收缩,然后将其更改回完整。 我想这不适用于你依靠Full进行镜像的情况。
这很奇怪,但是当时可能有一些数据库操作正在进行,即使没有活动的“事务”? 我不太了解SQL服务器。 无论如何,我怀疑它和自由空间有什么关系。
在serverfault.com上,您可能比在SU上遇到更多问题。
我在我的网站上有一个程序就是这么做的。
每当我需要。