Jeden z naszych klientów posiada serwer, na którym zainstalowana jest baza danych MSSQL w wersji Express, na której z kolei pracuje CDN Optima. Niestety, jakiś czas temu (gdy jeszcze nie był naszym klientem), padł ofiarą Ransomware, a w związku z tym wszystkie znajdujące się na jego serwerze pliki zostały zaszyfrowane. Kopie bezpieczeństwa były wykonywane rzadko, a więc i straty spowodowane infekcją były znaczące. Odtwarzanie danych zajęło trochę czasu…
Aktualnie w celu zminimalizowania ryzyka utraty danych postanowiliśmy uruchomić na jego serwerze kilka przydatnych skryptów. Jeden z nich który właśnie opiszę służy do zautomatyzowania wykonywania kopii bezpieczeństwa bazy danych.
Skrypt ma postać:
sqlcmd -E -S NAZWA_SERWERA\NAZWA_INSTANCJI -Q "BACKUP DATABASE [NAZWA_BAZY_DANYCH] TO DISK = N'SCIEZKA_BACKUPU' WITH NOFORMAT, NOINIT, NAME = N'NAZWA_BACKUPU', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
Przykład:
sqlcmd -E -S SERWER1\OPTIMA -Q "BACKUP DATABASE [BAZA_OPTIMY] TO DISK = N'D:\KOPIE\OPTIMA.BAC' WITH NOFORMAT, NOINIT, NAME = N'OPTIMA - Full Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
Aby kopie nie nadpisywały się, do nazwy pliku dodaliśmy generowanie bieżącej daty i godziny.
sqlcmd -E -S SERWER1\OPTIMA -Q "BACKUP DATABASE [BAZA_OPTIMY] TO DISK = N'D:\KOPIE\OPTIMA_%DATE%_%TIME:~0,2%-%TIME:~3,2%.BAC' WITH NOFORMAT, NOINIT, NAME = N'OPTIMA - Full Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
Mając gotowy plik, wystarczyło dodać do harmonogramu automatyczne uruchamianie o określonej porze. Gotowe.
W tym przypadku kopia wykonuje się codziennie o godzinie 22:00 pliki mają nazwę np.: OPTIMA_2016-12-11_22-00.BAC