Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

The SQL Server sp_spaceused stored procedure is useful for finding out a database size, unallocated space, etc. However (as far as I can tell), it does not report that information for the transaction log (and looking at database properties within SQL Server Management Studio also does not provide that information for transaction logs).

While I can easily find the physical space used by a transaction log by looking at the .ldf file, how can I find out how much of the log file is used and how much is unused?

share|improve this question

5 Answers 5

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 
share|improve this answer

Another way - fire up perfmon and check out the following counters:

  • SQLServer:Databases Log File(s) Size(KB)
  • SQLServer:Databases Log File(s) Used Size(KB)
  • SQLServer:Percent Log Used

These values update in real-time.

share|improve this answer

Another way - perform in MS SQL Management Studio the following command:

  • Right click on the database
  • Tasks
  • Shrink
  • Files

and select File Type = Log you will not only see the file size and % of available free space.

share|improve this answer

For a more GUI approach SQL Management studio can create a disk space (amongst others) report for a database (right click on the database node in the object explorer, select reports).

This report will also show information on recent file resizes.

share|improve this answer
up vote 4 down vote accepted

Found the answer just after I submitted the question :)

It looks like dbcc sqlperf(logspace) and dbcc loginfo are my friend.

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

share|improve this answer
    
This is definitely the best way, and would have been my answer. –  Paul Randal Jun 24 '09 at 14:34

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.