Job Scheduling w MS SQL 2005 Express

Dziś będzie kolejny element wykonywania kopii zapasowych, choć tym razem związanych z SQL’em. Po migracji bazy jednego z systemów z MS SQLa 2000 na MS SQL 2005 Express pojawił się problem w jaki sposób automatycznie backupować bazę danych. Problem polega na tym, iż wersja Express nie posiada usługi Job Scheduling, niemniej niezaprzeczalną zaletą tej wersji SQL’a jest fakt, iż jest ona bezpłatna. Jak w takim razie automatycznie wykonywać zadania ??

Do tego celu wykorzystamy dołączone do pakietu narzędzie SQLCMD oraz standardowy Windowsowy Task Scheduler. W tym celu najpierw tworzymy sobie najprostszy skrypt SQLowy do wykonania backupu i zapisujemy go do pliku *.sql.

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

Ewentualnie możemy stworzyć go poprzez wyklikanie odpowiednich parametrów w Microsoft SQL Server Management Studio Express, jednakże nie wykonujemy go lecz wybieramy opcję Script Action to File.

Natomiast całe zapytanie będzie wykonane przez aplikację SQLCMD, która domyślnie znajduje się w C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.exe.

sqlcmd -S  -E -i "
sqlcmd -S Test -E -i C:\test.sql

Przydatne parametry (z racji dużej ilość parametrów ważne jest zachowanie wielkości znaków):
S – wskazanie serwera baz danych
E – wykorzystanie uwierzytelniania Windows
i – podanie pliku wejściowego ze skryptem SQL

Następnie ściągamy i instalujemy sobie tzw. PowerShellPack zawierający interesującą nas przystawkę do zarządzania Task Schedulerem.

Przechodzimy zatem do utworzenia nowego zadania. Całość składa się z kilku komend przekazujących sobie po kolei potrzebne parametry.

New-task | Add-TaskTrigger -Daily -At "3:00 PM" | Add-TaskAction -Path "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.exe -S Test -E -i C:\test.sql" | Register-ScheduledTask TestTask

Na dowód że wszystko jest ok możemu sprawdzić stan listy zadań Task Schedulera.

Get-ScheduledTask

Alternatywnie możemy wykorzystać polecenie linii komend SCHTASKS.

SCHTASKS /Create /SC Daily  /TN testBackup /ST 15:30:00 /TR "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.exe -S Test -E -i C:\test.sql"

Przykład wykonania:

Jak widzimy kopia wykonała się prawidłowo, a z racji zaprogramowania jej w harmonogramie zadań będzie się wykonywała automatycznie o zaprogramowanej porze. Rozwiązanie wykonane na około, ale ważne, że skuteczne.

Źródła:
http://www.microsoft.com/poland/sql/prodinfo/compare/default.mspx
http://www.microsoft.com/poland/technet/article/art0050_01.mspx
http://technet.microsoft.com/en-us/library/bb490996.aspx
http://code.msdn.microsoft.com/PowerShellPack

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s