Πριν από λίγο ένας συνεργάτης μου, που έχει πολλούς πελάτες με ERP που είναι σε SQL Server μου ζήτησε να παίρνει backup σε ημερήσια εβδομαδιαία βάση αυτοματοποιημένα. Δηλαδή ένα backup για κάθε database (full βεβαια) κάθε μέρα της εβδομάδας, και την επόμενη εβδομάδα να γράφει πάνω στο προηγούμενο της αντίστοιχης ημέρας.
Η λύση είναι απλή
Πάμε και φτιάχνουμε ένα job στον SQL Server Agent, και σε αυτό, στο ένα και μοναδικό step βάζουμε το παρακάτω script:
- declare @weekday char(3) declare @dbname varchar(50) declare @backupPath varchar(1024) declare @backupFileName varchar(128) declare @command varchar(2048)
-
-
set @dbname ='<Enter yours db name>' set @backupPath ='<Enter your backup path location with \ at the end>' set @backupFileName='<Enter the backup filename without extention>' -
select @weekday=upper(left(datename(dw,getdate()),3)) set @command = 'backup database ' + @dbname + ' to disk=''' + @backupPath +'\' +upper(@backupFileName)+'_'+@weekday+'.bak' + ''' with init' -
exec (@command)
Αλλάζουμε τις τιμές στις μεταβλητές @dbname, @backuPath, @backupFileName, με αυτές που θέλουμε και προγραμματίζουμε το job αυτό να τρέχει κάθε μέρα στην ώρα που θέλουμε.
Με αυτή την υλοποίηση έχουμε καθημερινό backup για την κάθε ημέρα της εβδομάδας σε ξεχωριστά αν ήμερα devices.
Καλά database backup!