如何找到 SQL 事务日志使用的空间?

如何找到 SQL 事务日志使用的空间?

SQL Server sp_spaceused 存储过程对于查找数据库大小、未分配空间等很有用。但是(据我所知),它不会报告事务日志的该信息(并且查看 SQL Server Management Studio 中的数据库属性也不会提供事务日志的该信息)。

虽然我可以通过查看 .ldf 文件轻松找到事务日志使用的物理空间,但是如何才能找出日志文件已使用的容量以及未使用的容量呢?

答案1

我提交问题后就找到了答案:)

看起来 dbcc sqlperf(logspace) 和 dbcc loginfo 是我的朋友。

http://www.mssqltips.com/tip.asp?tip=1225

答案2

create table #dbsize 
(Dbname varchar(30),dbstatus varchar(20),Recovery_Model varchar(10) default ('NA'), file_Size_MB decimal(20,2)default (0),Space_Used_MB decimal(20,2)default (0),Free_Space_MB decimal(20,2) default (0)) 
go 

insert into #dbsize(Dbname,dbstatus,Recovery_Model,file_Size_MB,Space_Used_MB,Free_Space_MB) 
exec sp_msforeachdb 
'use [?]; 
  select DB_NAME() AS DbName, 
    CONVERT(varchar(20),DatabasePropertyEx(''?'',''Status'')) ,  
    CONVERT(varchar(20),DatabasePropertyEx(''?'',''Recovery'')),  
sum(size)/128.0 AS File_Size_MB, 
sum(CAST(FILEPROPERTY(name, ''SpaceUsed'') AS INT))/128.0 as Space_Used_MB, 
SUM( size)/128.0 - sum(CAST(FILEPROPERTY(name,''SpaceUsed'') AS INT))/128.0 AS Free_Space_MB  
from sys.database_files  where type=0 group by type' 





go 
select * from #dbsize 

答案3

另一种方法 - 在 MS SQL Management Studio 中执行以下命令:

  • 右键单击数据库
  • 任务
  • 收缩
  • 文件

并选择文件类型 = 日志,您不仅会看到文件大小和可用空间的百分比。

答案4

另一种方法 - 启动 perfmon 并检查以下计数器:

  • SQLServer:数据库日志文件大小 (KB)
  • SQLServer:数据库日志文件已用大小 (KB)
  • SQLServer:日志使用百分比

这些值实时更新。

相关内容