To find the database files, file groups and file growth in sql server:
SELECT DB_NAME(database_id) AS DatabaseName,
CAST([Name] AS varchar(20)) AS NameofFile,
CAST(physical_name AS varchar(100)) AS PhysicalFile,
type_desc AS FileType,
((size * 8)/1024) AS FileSize,
MaxFileSize = CASE WHEN max_size = -1 OR max_size = 268435456 THEN 'UNLIMITED'
WHEN max_size = 0 THEN 'NO_GROWTH'
WHEN max_size <> -1 OR max_size <> 0 THEN CAST(((max_size * 8) / 1024) AS varchar(15))
ELSE 'Unknown'
END,
SpaceRemainingMB = CASE WHEN max_size = -1 OR max_size = 268435456 THEN 'UNLIMITED'
WHEN max_size <> -1 OR max_size = 268435456 THEN CAST((((max_size - size) * 8) / 1024) AS varchar(10))
ELSE 'Unknown'
END,
Growth = CASE WHEN growth = 0 THEN 'FIXED_SIZE'
WHEN growth > 0 THEN ((growth * 8)/1024)
ELSE 'Unknown'
END,
GrowthType = CASE WHEN is_percent_growth = 1 THEN 'PERCENTAGE'
WHEN is_percent_growth = 0 THEN 'MBs'
ELSE 'Unknown'
END
FROM master.sys.master_files
WHERE state = 0
AND type_desc IN ('ROWS','LOG')
ORDER BY database_id, file_id.
To find the databases log files space usage:
Dbcc sqlperf(logspace)
To find the data files space usage:
create table #dbsize
(Dbname sysname,
--dbstatus varchar(50),
--Recovery_Model varchar(40) default ('NA'),
file_Size_MB VArchar(3000),Space_Used_MB Varchar(2000),used_percentage Varchar(2000),Free_Space_MB Varchar(2000))
insert into #dbsize(Dbname,
--dbstatus,Recovery_Model,
file_Size_MB,Space_Used_MB,Free_Space_MB,used_percentage)
exec sp_msforeachdb
'use [?];
select DB_NAME() AS DbName,
sum(size)/128.0 AS File_Size_MB,
sum(CAST(FILEPROPERTY(name, ''SpaceUsed'') AS INT))/128.0 as Space_Used_MB,
--sum(CAST(FILEPROPERTY(name, ''SpaceUsed'') AS INT))/128.0 *100 as used,
SUM( size)/128.0 - sum(CAST(FILEPROPERTY(name,''SpaceUsed'') AS INT))/128.0 AS Free_Space_MB ,
(sum(CAST(FILEPROPERTY(name, ''SpaceUsed'') AS INT))/128.0 )*100/((sum(CAST(FILEPROPERTY(name, ''SpaceUsed'') AS INT))/128.0)+(SUM( size)/128.0 - sum(CAST(FILEPROPERTY(name,''SpaceUsed'') AS INT))/128.0))AS used_percentage from sys.database_files where type=0 group by type'
select * from #dbsize
drop table #dbsize
--select * from sys.sysaltfiles
SELECT DB_NAME(database_id) AS DatabaseName,
CAST([Name] AS varchar(20)) AS NameofFile,
CAST(physical_name AS varchar(100)) AS PhysicalFile,
type_desc AS FileType,
((size * 8)/1024) AS FileSize,
MaxFileSize = CASE WHEN max_size = -1 OR max_size = 268435456 THEN 'UNLIMITED'
WHEN max_size = 0 THEN 'NO_GROWTH'
WHEN max_size <> -1 OR max_size <> 0 THEN CAST(((max_size * 8) / 1024) AS varchar(15))
ELSE 'Unknown'
END,
SpaceRemainingMB = CASE WHEN max_size = -1 OR max_size = 268435456 THEN 'UNLIMITED'
WHEN max_size <> -1 OR max_size = 268435456 THEN CAST((((max_size - size) * 8) / 1024) AS varchar(10))
ELSE 'Unknown'
END,
Growth = CASE WHEN growth = 0 THEN 'FIXED_SIZE'
WHEN growth > 0 THEN ((growth * 8)/1024)
ELSE 'Unknown'
END,
GrowthType = CASE WHEN is_percent_growth = 1 THEN 'PERCENTAGE'
WHEN is_percent_growth = 0 THEN 'MBs'
ELSE 'Unknown'
END
FROM master.sys.master_files
WHERE state = 0
AND type_desc IN ('ROWS','LOG')
ORDER BY database_id, file_id.
To find the databases log files space usage:
Dbcc sqlperf(logspace)
To find the data files space usage:
create table #dbsize
(Dbname sysname,
--dbstatus varchar(50),
--Recovery_Model varchar(40) default ('NA'),
file_Size_MB VArchar(3000),Space_Used_MB Varchar(2000),used_percentage Varchar(2000),Free_Space_MB Varchar(2000))
insert into #dbsize(Dbname,
--dbstatus,Recovery_Model,
file_Size_MB,Space_Used_MB,Free_Space_MB,used_percentage)
exec sp_msforeachdb
'use [?];
select DB_NAME() AS DbName,
sum(size)/128.0 AS File_Size_MB,
sum(CAST(FILEPROPERTY(name, ''SpaceUsed'') AS INT))/128.0 as Space_Used_MB,
--sum(CAST(FILEPROPERTY(name, ''SpaceUsed'') AS INT))/128.0 *100 as used,
SUM( size)/128.0 - sum(CAST(FILEPROPERTY(name,''SpaceUsed'') AS INT))/128.0 AS Free_Space_MB ,
(sum(CAST(FILEPROPERTY(name, ''SpaceUsed'') AS INT))/128.0 )*100/((sum(CAST(FILEPROPERTY(name, ''SpaceUsed'') AS INT))/128.0)+(SUM( size)/128.0 - sum(CAST(FILEPROPERTY(name,''SpaceUsed'') AS INT))/128.0))AS used_percentage from sys.database_files where type=0 group by type'
select * from #dbsize
drop table #dbsize




