Στο προηγούμενο μιλήσαμε για τον sql server express, σε αυτό θα δώσουμε μια γρήγορη λύση scheduled backup για τον express που έχει δοκιμαστεί για πολλά χρόνια σε αρκετές εγκαταστάσεις.
Η λύση λειτουργεί σε όλες τις εκδόσεις του sql server, αν και τα μεγαλύτερα αδέλφια του express, έχουν πιο προηγμένους τρόπους για τη λήψη αντιγράφων ασφαλείας με την χρήση του agent – δείτε εδώ σχετικά.
Η εν λόγω λύση αποτελείται από 2 αρχεία, ένα cmd script και ένα sql script που αναλαμβάνουν να λάβουν αντίγραφα όλων των βάσεων δεδομένων του instance του sql server express, σε τοπικό φάκελο του συστήματος.
Το μόνο που θα χρειαστεί να αλλάξετε είναι το server_name στο backup.cmd.
backup.cmd
IF NOT EXIST C:\backups MD C:\backups
sqlcmd -S server_name -i c:\Backups\backup.sql -o C:\backups\backup.log
backup.sql
SET QUOTED_IDENTIFIER OFF
USE master
GO
SET NOCOUNT ON
DECLARE @dayofweek varchar(20)
SELECT @dayofweek = CASE datepart(dw, getdate())
WHEN 1 THEN 'Sunday'
WHEN 2 THEN 'Monday'
WHEN 3 THEN 'Tuesday'
WHEN 4 THEN 'Wednesday'
WHEN 5 THEN 'Thursday'
WHEN 6 THEN 'Friday'
WHEN 7 THEN 'Saturday'
END
DECLARE @OutputPath varchar(500)
DECLARE @DatabaseBackupFile varchar(500)
DECLARE @FolderName varchar(25)
DECLARE @DatabaseName varchar(25)
DECLARE @strSQL varchar(2000)
DECLARE @hostname varchar(255)
SET @hostname = (select replace(convert(varchar(255),serverproperty(‘SERVERNAME’)), ‘\’,’_’))
SET @OutputPath = ‘C:\Backups’
DECLARE cur_Backup CURSOR FOR
select name from sysdatabases where name !=’tempdb’
OPEN cur_Backup
FETCH NEXT FROM cur_Backup INTO @DatabaseName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @DatabaseBackupFile = @OutputPath + ‘\’ + @hostname + ‘-‘ + @DatabaseName + ‘-‘ + @dayofweek + ‘.bak’
print @DatabaseBackupFile
SET @strSQL = ‘BACKUP DATABASE ‘+@DatabaseName+’ TO DISK = “‘+ @DatabaseBackupFile+ ‘” WITH RETAINDAYS = 7, NOFORMAT, INIT, NAME = N”Full Database Backup”, SKIP, NOREWIND, NOUNLOAD, STATS = 10’
PRINT @strSQL
EXEC (@strSQL)
FETCH NEXT FROM cur_Backup INTO @DatabaseName
END
— Distroy Cursor
CLOSE cur_Backup
DEALLOCATE cur_Backup
SET NOCOUNT OFF
Απομένει να προσθέσετε στον scheduler των windows ημερήσιο προγραμματισμό εκτέλεσης του backup.cmd.
Προφανώς και δεν πρέπει να επαναπαυτείτε στα παραπάνω: για να εξασφαλίσετε ότι τα αρχεία δεν θα χαθούν αν χτυπήσει ο τοπικός δίσκος, θα πρέπει να αντιγράφετε περιοδικά τα αρχεία του φακέλου backup σε εξωτερικό σύστημα.
Αφήστε μια απάντηση