Configure msdb Size and Growth in SQL Server

Gives msdb a sensible starting size and growth (50 MB, growing 200 MB) so job and backup history do not grow it in tiny steps. It only ever grows a file, never shrinks one. Tested on SQL Server 2017 and 2025 and safe to run more than once.

-- 01.Configure_MSDB.sql
-- Author: Clive Roberts DBA. For SQL Server 2016 to 2022 (tested on SQL Server 2017 and 2025). Safe to run again.
-- Change the settings below if needed, then run it (F5, normal mode, not SQLCMD).
GO
USE [master];
-- msdb data 50 MB, log 50 MB, both growing 200 MB; only ever grows a file, never shrinks it
DECLARE @f sysname, @size int, @sql nvarchar(400);
DECLARE f CURSOR LOCAL FAST_FORWARD FOR SELECT name, size / 128 FROM sys.master_files WHERE database_id = DB_ID(N'msdb');
OPEN f; FETCH NEXT FROM f INTO @f, @size;
WHILE @@FETCH_STATUS = 0
BEGIN
    SET @sql = N'ALTER DATABASE [msdb] MODIFY FILE (NAME = ' + QUOTENAME(@f) + N', FILEGROWTH = 200MB'
             + CASE WHEN @size < 50 THEN N', SIZE = 50MB' ELSE N'' END + N');';
    EXEC (@sql);
    FETCH NEXT FROM f INTO @f, @size;
END
CLOSE f; DEALLOCATE f;
PRINT N'  msdb files: at least 50 MB, growth 200 MB';
GO