sql server logo

προγραμματισμένο backup στον sql server express

by

in

Στο προηγούμενο μιλήσαμε για τον 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 σε εξωτερικό σύστημα.


Comments

Μία απάντηση στο “προγραμματισμένο backup στον sql server express”

  1. […] Είδαμε κάτι αντίστοιχο για τον sql server express, αλλά ήρθε και η ώρα του mysql. Όταν μιλάμε για mysql, μιλάμε για linux κι όταν μιλάμε για linux, ανοίγουμε την κονσόλα. […]

Αφήστε μια απάντηση

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *