wtorek, 6 kwietnia 2010

Automatyzacja zadań czyli SQL Agent w wersji Express.

Narzędzie SQL Agent pozwalana na automatyzację zadań serwerowych. Za jego pomocą można np. zdefiniować plan backupów bazy danych. Zadania zdefiniowane w planie, będą wykonywać się zgodnie z harmonogramem.
SQL Agent nie jest dostępny w wersji Express. Jak zatem zautomatyzować pewne działania administracyjne? Do tego celu wykorzystamy narzędzie SQLCMD i Harmonogram Zadań Windows.

Wykorzystanie SQLCMD i Harmonogramu Zadań pokaże na przykładzie backupu bazy danych. Do tego celu przygotowałem sobie testową bazę danych o nazwie BAZA_TESTOWA oraz skrypt za pomocą którego wykonam backup mojej bazy.

-----------------------------------------
-- PEŁNY BACKUP BAZY DANYCH BAZA_TESTOWA
-----------------------------------------
BACKUP DATABASE BAZA_TESTOWA
TO DISK = 'D:\MSSQL\BACKUPDB\BAZA_TESTOWA_FULL_BACKUP.BAK';

Taki skrypt umieszczamy sobie w jakimś repozytorium na dysku.

Teraz możemy przejść do Harmonogramu Zadań. Tworzymy sobie nowe zadanie.


Dodajemy wyzwalacz. Czyli kiedy ma się wykonywać nasze zadanie.


Jak widać powyżej nasze zadanie będzie wykonywać się raz dziennie o godzinie 01:00.
Teraz możemy dodać zadania jakie mają się wykonać.




Moje zadania wyglądają następująco :

1. Odpalam program SQLCMD z następującymi parametrami :    

SQLCMD -S VAIO\SQLEXPRESS -i D:\MSSQL\SKRYPTY\BACKUP_DB.SQL 
-o D:\MSSQL\BACKUPDB\BACKUP_DB_OUTPUT_FILE.TXT

-S VAIO\SQLEXPRESS - loguję się do mojej instancji serwera;
-i D:\MSSQL\SKRYPTY\BACKUP_DB.SQL - odpalam skrypt przygotowany wcześniej do backupu bazy;
-o D:\MSSQL\BACKUPDB\BACKUP_DB_OUTPUT_FILE.TXT - generuję plik z wynikami wykonania skryptu.

2. Przenoszę zrobiony backup i wygenerowany plik do innego katalogu dodając jednocześnie datę wykonania do nazwy plików : 

CMD /C MOVE D:\MSSQL\BACKUPDB\BAZA_TESTOWA_FULL_BACKUP.BAK D:\MSSQL\BACKUPDB\ARCHIWUM\BAZA_TESTOWA_FULL_BACKUP_%DATE%.BAK 

CMD /C MOVE D:\MSSQL\BACKUPDB\BACKUP_DB_OUTPUT_FILE.TXT 
D:\MSSQL\BACKUPDB\ARCHIWUM\BACKUP_DB_OUTPUT_FILE_%DATE%.TXT

 Na tym właściwie koniec. Nasz backup został wykonany i przeniesiony do archiwum.


Jest to oczywiście tylko prosty przykład. Pewien zarys w jaki sposób można automatyzować zadania administracyjne. Można to oczywiście skomplikować pisząc bardziej zaawansowane skrypty i/lub bardziej wykorzystywać Harmonogram Zadań. Ale to pozostawiam Wam.