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