I've just written this query for auditing database files... haven't thoroughly tested it yet so let me know if there are any issues
CREATE TABLE #FileSpace (
[database_id] int,
[file_id] int,
[space_used] int
)
INSERT INTO #FileSpace EXEC sp_MSforeachdb 'USE ? SELECT db_id(''?''), fileid, FILEPROPERTY(name, ''SpaceUsed'') from sys.sysfiles'
SELECTd.name AS 'Database Name'
, f.name AS 'Logical File Name'
, f.physical_name AS 'Physical File Name'
, f.[file_id] AS 'File Id'
, f.type_desc AS 'Description'
, f.size / 128 AS 'File Size (MB)'
, CASE f.max_size
WHEN -1 THEN 'Unlimited'
ELSE CONVERT(VARCHAR, (f.max_size / 128))
END AS 'Maximum Size (MB)'
, fs.space_used / 128 AS 'Used Space (MB)'
, (f.size - fs.space_used) / 128 AS 'Free Space (MB)'
, CASE f.is_read_only
WHEN 1 THEN 'Read Only'
ELSE 'Read\Write'
END AS 'Read Only'
, CASE f.is_sparse
WHEN 1 THEN 'Sparse'
ELSE 'Not Sparse'
END AS 'Sparse File'
, CASE WHEN f.is_percent_growth = 1
THEN CONVERT(VARCHAR(3), f.growth) + ' %'
ELSE CONVERT (VARCHAR(5), f.growth / 128) + ' MB'
END AS 'Growth'
FROM sys.master_files f
JOIN sys.databases d
ON f.database_id = d.database_id
JOIN #FileSpace fs
ONfs.database_id = d.database_id
ANDfs.file_id = f.file_id
drop table #FileSpace