PDA

View Full Version : جیگزینی بک آپ قدیم با بک آپ جدید



ozzy_mra
شنبه 20 آبان 1391, 07:57 صبح
سلام
من با اسکریپت زیر از دیتا بیس هام بک آپ می گیرم :
--Simple Backup script to backup all the databases
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

--Path to backups
SET @path = 'E:\DataBase Backups\'

SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)

DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb','ReportServer',' ReportServerTempDB')

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name

WHILE @@FETCH_STATUS = 0
BEGIN
--Remove if you dont want a date stamp
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'

-- SET @fileName = @path + @name + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName with noinit

FETCH NEXT FROM db_cursor INTO @name
END

CLOSE db_cursor
DEALLOCATE db_cursor
به ازای هربار که اجرا میشه به تاریخ همون روز بک آپ تهیه میکنه ، من می خوام مثلاً بعد از یک هفته بک آپ جدیدم با اولین بک آپم Replace بشه
چطور می تونم این کار رو انجام بدم؟

ozzy_mra
سه شنبه 23 آبان 1391, 12:07 عصر
ظاهراً بهترین کار اینه که با اسکریپت زیر فایل های قدیمی تر از یک هفته رو پاک کرد

DECLARE @DeleteDate datetime
SET @DeleteDate = DateAdd(day, -7, GetDate())

EXECUTE master.sys.xp_delete_file
0, -- FileTypeSelected (0 = FileBackup, 1 = FileReport)
N'E:\DataBase Backups\' , -- folder path (trailing slash)
N'bak', -- file extension which needs to be deleted (no dot)
@DeleteDate, -- date prior which to delete
1 -- subfolder flag (1 = include files in first subfolder level, 0 = not)