DWH-ETL-OLAP
October 21, 2019
Процедура автоматического создания новых и очистки старых бэкапов БД
Процедура автоматического создания новых и очистки старых бэкапов БД, в формате простой модели восстановления. То, что нужно для баз ХД.
При условии если у вас бекапы создаются "шлейфом", т.е. каждый день, и удаляются по истечению определенного срока (2 недели).
CREATE PROCEDURE sp_backup_databases
--exec sp_backup_databases
as
DECLARE @name VARCHAR(50); -- Database name
DECLARE @path VARCHAR(256); -- Path for backup files
DECLARE @fileName VARCHAR(256); -- Filename for backup
DECLARE @fileDate VARCHAR(20); -- Used for file name
DECLARE @DeleteDate DATETIME =DATEADD(wk,-2,GETDATE()); -- Cutoff date
-- Path to backups.
SET @path = 'E:\Backups\';
-- Get date to include in file name.
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112);
-- Dynamically get each database on the server.
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.sys.databases
WHERE name NOT IN ('master','model','msdb','tempdb');
OPEN db_cursor;
FETCH NEXT FROM db_cursor INTO @name;
-- Loop through the list to backup each database.
WHILE @@FETCH_STATUS = 0
BEGIN
-- Build the path and file name.
SET @fileName = @path + @name + '_' + @fileDate + '.BAK';
-- Backup the database.
BACKUP DATABASE @name TO DISK = @fileName WITH INIT;
-- Loop to the next database.
FETCH NEXT FROM db_cursor INTO @name;
END
-- Purge old backup files from disk.
EXEC master.sys.xp_delete_file 0,@path,'BAK',@DeleteDate,0;
-- Clean up.
CLOSE db_cursor;
DEALLOCATE db_cursor;
GO