Jump to content
  • entries
    292
  • comments
    368
  • views
    55352

SQL Server Express – Schedule backup


antonch

615 views

Μόλις έλαβα ένα request από τον συνάδελφο Γιώργο Σίμο να φτιάξω κάτι για να παίρνει schedule backup στο sql server express, μιας και αυτή η έκδοση δεν έχει τον sql server agent.

Λοιπόν όποιος θέλει να υλοποιήσει μια τέτοια λύση θα πρέπει να κάνει τα εξής βήματα:

BHMA 1o

Αποθηκεύω το παρακατώ script σε ένα αρχείο πχ c:\My SQL Scripts\DBBackupPerDay.sql

declare @weekday char(3)
declare @command varchar(2048)
select @weekday=upper(left(datename(dw,getdate()),3))
set @command = 'backup database $(dbname) to disk =''$(backupPath)\$(dbname)_'+@weekday+'.bak' + ''' with init'
exec (@command)

Εδώ έχω πάρει σαν υπόθεση εργασίας ότι κάθε μέρα θα παίρνουμε ημερήσιο full backup την βάση μας σε ξεχωριστό device, το οποίο στην επόμενη φορά που θα ξαναπάρω backup σε αυτό θα σβήνει το προηγούμενο. Δηλαδή έστω ότι είναι Δευτέρα και παίρνω backup την επόμενη Δευτέρα θα σβηστεί το backup αυτής.
Εάν υπάρχει ανάγκη για κάτι διαφορετικό ενημερώστε με να σας δώσω την λύση.

ΒΗΜΑ 2ο

Ανοίγουμε τον Windows Task Scheduler και φτιάχνουμε ένα νέο Task (Create Task).

image

Δίνουμε όνομα και βάζουμε να τρέχει το συγκεκριμένο με ένα windows account που έχει πρόσβαση στον sql server σαν administrator ( η εύκολη λύση ) ή σαν απλός χρήστης αλλά που το έχουμε δώσει να παίρνει backup databases. Επίσης θα πρέπει να έχει write permissions στο directory στο οποίο πρόκειται να τοποθετήσουμε τα backup μας.

ΒΗΜΑ 3ο

Πάμε στο Action Tab και φτίαχνουμε ένα νέο action στο οποίο βάζουμε τα εξής

image

στο (1) βάζουμε το SQLCMD.exe μαζί με το full path του λογικά θα είναι το

"C:\Program Files\Microsoft SQL Server\90\Tools\binn\SQLCMD.EXE"

στο (2) βάζουμε τα εξής

/S .\sqlexpress /E /i "c:\My SQL Scripts\DBBackupPerDay.sql" -v dbname=MyDB backuppath=”c:\backups"

στις dbname, backuppath βάζουμε αντίστοιχα το όνομα της βάσης μας και το directory στο οποίο θέλουμε να αποθηκεύονται αυτά.

ΒΗΜΑ 4ο

Τέλος φτιάχνουμε έναν Trigger ( Trigger Tab ) για να πούμε κάθε πότε θέλουμε να γίνεται η εκτέλεση τoυ backup.

Καλά backup!!!

10 Comments


Recommended Comments

Αντώνη,

 

Πολύ ωραία και σ' ευχαριστώ για την αστραπιαία απάντηση.

 

Στο παραπάνω sql script φτιάχνεις ένα νέο αρχείο για κάθε ημέρα σωστά;

με το set @command = 'backup database $(dbname) to disk =''$(backupPath)\$(dbname)_'+@weekday+'.bak'

Δηλαδή το παραγόμενο αρχείο θα είναι ας πούμε με όνομα βάσης το WSUS για τη Δευτέρα στο path c:\backups\: C:\Backups\WSUS_Monday.bak σωστά;

 

Και πάλι ευχαριστώ!

Link to comment

Όχι δεν θα σου παίξει αυτό

Θα πρέπει να κάνεις 2 άλλαγες στο script

Τα παρακάτω

 

declare @weekday varchar(10)

 

select @weekday=upper(datename(dw,getdate()))

 

στην θέση των

 

declare @weekday char(3)

 

select @weekday=upper(left(datename(dw,getdate()),3))

 

αντίστοιχα

Link to comment

Αντώνη πραγματικά ευχαριστώ,

Είναι πολυ σπουδαίο το schedulaki αυτό ειδικά για τους μη έχοντες DPM ,Να στε καλα παιδιά όντως πολύ χρήσιμο!

V

Link to comment

Καλησπέρα,

 

Επαναφέρω το συγκεκριμένο θέμα - πέραν της μεγάλης χρησιμότητας του - για την εξής ερώτηση:

Μπορεί να τροποποιηθεί το sctipt ώστε εκτός από τα 3 γράμματα της ημέρας να περιλαμβάνει και την πλήρη ημερομηνία;

Link to comment

@memphis

Η αλλαγή που ζήτησες

 

declare @command varchar(2048)

set @command = 'backup database $(dbname) to disk =''$(backupPath)\$(dbname)_'+CONVERT(varchar(20),getdate(),112)+'.bak' + ''' with init'

exec (@command)

 

Link to comment
Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...