Ads by Google

Zakažite bekap baze podataka koristeći SQL Server Express i Windows Task Scheduler

Besplatna verzija, SQL Server Express, ne omogućuje nikakvu integrisanu alatku za zakazivanje posla bekapa baze podataka (SQL Server Agent je prisutan samo u verzijama koje se plaćaju); u ovom članku koristićemo besplatnu alternativu – zakazaćemo poslove bekapa baze podataka koristeći SQL Server Express i Windows Task Scheduler, kako bismo napravili dnevne, sedmične i mesečne rezervne kopije SQL baza podataka.

Izostavljanje SQL Agenta nas neće sprečiti da nađemo jednostavan zaobilazni put – iskoristićemo benefite Windowsovog Task Schedulera, alatke integrisane u sam Windows operativni sistem. Ovaj način, da se kreiraju dnevni, sedmični i mesečni bekapi, sastoji se od:

  1. korisnički definisanih T-SQL skripti,
  2. integrisane SQL alatke, prisutne u Express izdanjima: sqlcmd.exe,
  3. Windows Task Scheduler – koji služi da se to sve lepo uveže:
    • skripte koje ćemo kreirati,
    • ova integrisana alatka, s dodatnim argumentima,
    • samo vreme izvršenja (dnevni, sedmični, i mjesečni “okidači”).

1. Korisnički definisan T-SQL skript

Uzmimo da je ime naše baze podataka EasyDatabase. Za potrebe ovog članka, napravićemo tri T-SQL skripte locirane, primera radi, na putanji: D:\DBBackup. U ovom direktorijumu ćemo takođe kreirati i tri pod-direktorijuma: Daily, Weekly, Monthly.

Ime prve skripte: DailyBackupScript.sql
Otvorimo je Notepadom ili nekim drugim tekst editorom i ubacite ovaj kod:

BACKUP DATABASE [EasyDatabase] TO DISK = N’D:\DBBackup\Daily\EasyDatabase.bak’ WITH NOFORMAT, INIT, NAME = N’EasyDatabase-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO

Ime druge skripte: WeeklyBackupScript.sql
Sličnom procedurom, ubacite ovaj kod:

BACKUP DATABASE [EasyDatabase] TO DISK = N’D:\DBBackup\Weekly\EasyDatabase.bak’ WITH NOFORMAT, INIT, NAME = N’EasyDatabase-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO

Ime treće skripte: MonthlyBackupScript.sql
Sadržaj skripte:

BACKUP DATABASE [EasyDatabase] TO DISK = N’D:\DBBackup\Monthly\EasyDatabase.bak’ WITH NOFORMAT, INIT, NAME = N’EasyDatabase-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO

Neka sledeća slika bude orijentir da li ste sve dobro uradili:

Backup SQL database script

2. Integrisana alatka sqlcmd.exe

Ovu konzolnu alatku ćemo iskoristiti da izvršimo ova tri *.sql skripta. U slučaju da imate instaliran SQL Server 2012 Express, lokacija alatke je sledeća:
C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SQLCMD.EXE

Alatka se koristi sa sledećim argumentima (primer):
-S SQLSERVER\EASYDBSQL -i “D:\DBBackup\DailyBackupScript.sql”

  • -S argument se odnosi na instancu SQL servera koju treba bekapovati (\sqlexpress ukoliko koristite podrazumevanu instancu),
  • -i argument kazuje koji skript treba pokrenuti.

Prije zakazivanja zadatka, skript se može testirati iz komandne linije (sledeći primer radi na SQL Server Express 2012):

C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqlcmd.exe -S SQLSERVER\EASYDBSQL -i “D:\DBBackup\DailyBackupScript.sql”

Ako sve prođe bez greške, videćete da je kreiran bekap naziva: EasyDatabase.bak u direktorijumu: D:\DBBackup\Daily\

Sličan rezon primenite i na sedmične i na mesečne bekape.

 

3. Windows Task Scheduler

Iskoristićemo funkcionalnost Task schedulera kako bi zakazali tri bekap zadatka – Daily, Weekly and Monthly. Za sve zadatke, u čaorbnjaku podesite sledeće parametre:
a) izvršavanje s najvećim prioritetom (highest priority),
b) izvršavanje iako korisnik nije ulogovan na računar (execute even if the user is not logged in),
c) naznačite lokaciju konzolne alatke za izvršavanje skripti; locirajte alatku sqlcmd.exe i unesite dodatne argumente (kao što je već pomenuto). Uočite da svaki zadatak mora odgovarati svom skriptu (tj. Daily zadatak (job) mora odgovarati daily T-SQL skriptu).

Job1: DailyBackupTask

Task Scheduler Database Backup

• Trigger: every day
• Time: 23:35

Task Scheduler SQL database

U jezičku Actions, u New Action dijalog prozoru, odaberite “Start a program”, i locirajte SQLCMD.EXE (putanja zavisi od verzije SQL Servera). Takođe je obavezno da se dodaju argumenti, što zavisi od zadatka (job-a).

Recimo, za Daily zadatak, kucate ovo: -S SQLSERVER\EASYDBSQL -i “D:\DBBackup\DailyBackupScript.sql”

Task Scheduler Start Program

Ponovite sličnu proceduru za ostale zadatke.

Job2: WeeklyBackupTask
• Trigger: weekly
• Time: every Sunday, 23:00h

Job3: MonthlyBackupTask
• Trigger: monthly
• Time: 23:15h, every last day of January, February, ……, December.

 

Primetite da kreiranje novog bekapa prepisuje ovaj stari.
Lokacija bekap datoteka:

D:\DBBackup\Daily\
D:\DBBackup\Weekly\
D:\DBBackup\Monthly\

 

Podelite članak dalje ako vam se dopada i ostavite komentare u polju ispod.
Fil

Summary
Schedule database backup jobs by using SQL Server Express and Windows Task Scheduler
Article Name
Schedule database backup jobs by using SQL Server Express and Windows Task Scheduler
Description
The free SQL Server Express edition does not provide a built-in utility to schedule database backup jobs (SQL Server Agent is present in the paid editions only); in this article we use the free alternative - we schedule database backup jobs by using SQL Server Management Studio Express and Windows Task Scheduler to create automated daily, weekly, and monthly backups of SQL databases.
Author
www.CreativForm.com