All of a sudden I received an email from the database owner –
“pls share file growth if u have so that the sizing can be done better”
We don’t have any mechanism or 3rd party tool that monitored such historical data. Also, no trace was enabled previously on the server. I started searching on internet for a quick way to find the growth size set for all the databases on a SQL instance. Thanks to blog.sqlauthority.com I got my solution with two TSQL scripts that end up my search.
Here is the TSQL script
SELECT
-- Retrieve the name of the database
'Database Name' = DB_NAME(database_id),
-- Retrieve the name of the file
'FileName' = NAME,
-- Retrieve the ID of the file
FILE_ID,
-- Convert the size to kilobytes and format it as a string
'size' = CONVERT(NVARCHAR(15), CONVERT(BIGINT, size) * 8) + N' KB',
-- Determine the maximum size of the file
'maxsize' = (
CASE max_size
-- If the maximum size is -1, it is considered unlimited
WHEN -1 THEN N'Unlimited'
-- Convert the maximum size to kilobytes and format it as a string
ELSE CONVERT(NVARCHAR(15), CONVERT(BIGINT, max_size) * 8) + N' KB'
END
),
-- Determine the growth rate of the file
'growth' = (
CASE is_percent_growth
-- If the growth rate is in percentage, format it with a percent sign
WHEN 1 THEN CONVERT(NVARCHAR(15), growth) + N'%'
-- Convert the growth rate to kilobytes and format it as a string
ELSE CONVERT(NVARCHAR(15), CONVERT(BIGINT, growth) * 8) + N' KB'
END
),
-- Retrieve the description of the file type
'type_desc' = type_desc
FROM sys.master_files
ORDER BY database_id
Here is the result

Here is another TSQL script
SELECT
-- Retrieve the database name using the database ID
DB_NAME([database_id]) AS [Database],
-- Retrieve the file type
type_desc AS [File Type],
-- Retrieve the logical name of the file
name AS [Logical Name],
-- Convert the size to initial size in megabytes
CONVERT(BIGINT, size / 128.0) AS [Initial Size (MB)],
-- Determine the autogrowth rate of the file
CASE is_percent_growth
WHEN 1 THEN CONVERT(NVARCHAR(16), growth) + N'%'
ELSE CONVERT(NVARCHAR(16), CONVERT(BIGINT, growth / 128.0)) + N' MB'
END AS [Autogrowth],
-- Determine the maximum size of the file in megabytes
CASE max_size
WHEN -1 THEN N'Unlimited'
ELSE CONVERT(NVARCHAR(16), CONVERT(BIGINT, max_size / 128.0))
END AS [Maxsize (MB)],
-- Retrieve the physical file path
physical_name AS [File Path]
FROM sys.master_files WITH (NOLOCK)
--WHERE
-- [database_id] > 4
ORDER BY DB_NAME([database_id])
OPTION (RECOMPILE);
Here is the result

If you want to Calculate database size ‘Growth Rates’ on daily basis in SQL Server here is another post.
2 thoughts on “Find database growth size in SQL Server”