Files
sql-scripts/DBG - compute arizona backup size with compression.sql
2024-03-07 16:52:14 +01:00

49 lines
2.1 KiB
PL/PgSQL

IF OBJECT_ID('tempdb..#state')IS NOT NULL BEGIN;
DROP TABLE #state;
END;
SELECT
database_name = DB_NAME(database_id)
, log_size_mb = CAST(SUM(CASE WHEN f.type_desc = 'LOG' THEN size END) * 8. / 1024 AS DECIMAL(18,2))
, row_size_mb = CAST(SUM(CASE WHEN type_desc = 'ROWS' THEN size END) * 8. / 1024 AS DECIMAL(18,2))
, total_size_mb = CAST(SUM(size) * 8. / 1024 AS DECIMAL(18,2))
, CAST(NULL AS DECIMAL(18,2)) AS compression_backup_percent
, CAST(NULL AS DECIMAL(18,2)) AS compressed_backup_size_MB
INTO #state
FROM sys.master_files F WITH(NOWAIT)
WHERE LOWER(DB_NAME(database_id)) = 'arizona'
GROUP BY F.database_id
--#region start dummy backup
BACKUP DATABASE [Arizona] TO DISK = N'nul' WITH COPY_ONLY, NOFORMAT, INIT, NAME = N'Arizona-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10
--#endregion start dummy backup
--#region compute last backup compressed size
UPDATE s SET [s].[compression_backup_percent] = x.[compressPct]
, s.[compressed_backup_size_MB] = x.[compressed_bkp_MB]
FROM [#state] s
CROSS APPLY (
SELECT TOP (1)
[a].[backup_start_date]
,[a].[backup_finish_date]
,[a].[type]
,[a].[backup_size]
,[a].[backup_size] / 1024 / 1024 / 1024 AS bkp_size_GB
,[a].[backup_size] / 1024 / 1024 AS bkp_size_MB
,[a].[compressed_backup_size]
,[a].[compressed_backup_size] / 1024 / 1024 / 1024 AS compressed_bkp_GB
,[a].[compressed_backup_size] / 1024 / 1024 AS compressed_bkp_MB
,[a].[is_copy_only]
,compressPct = CAST(100.0 * [a].[compressed_backup_size] / [a].[backup_size] AS DECIMAL(5, 1))
FROM msdb.dbo.backupset a
WHERE LOWER([a].[database_name]) = 'arizona' --LOWER(s.[database_name])
AND [a].[type]='D' --full bkp only
AND [a].[is_copy_only] = 1
AND [a].[backup_start_date] > DATEADD(HOUR, -1, CURRENT_TIMESTAMP)
ORDER BY [a].[backup_start_date] DESC
) x
--#endregion compute last backup compressed size
SELECT *
FROM [#state]