Czy Twoja baza ERP ma kopię? Sprawdź w 10 minut
Jeśli program ERP działa na SQL Server, data ostatniej kopii każdej bazy jest zapisana na serwerze. Jedno zapytanie pokazuje, kiedy kopia powstała i gdzie trafił plik. Kopia starsza niż doba albo leżąca na tym samym dysku co baza nie chroni firmy przed awarią.
Na pytanie „czy mamy kopię zapasową” prawie każda firma odpowiada „tak”, bo ktoś kiedyś ją ustawił. Na pytanie „kiedy powstała ostatnia kopia bazy, na której pracujecie dziś” odpowiedź zwykle brzmi „trzeba by sprawdzić”. Ten wpis pokazuje, jak sprawdzić to samodzielnie albo z informatykiem, w kilka minut i bez instalowania czegokolwiek.
Dotyczy to wszystkich programów, które trzymają dane w Microsoft SQL Server. W tej bazie działa większość popularnych w Polsce programów handlowo magazynowych, księgowych i ERP. Jeśli nie wiesz, czy Twój program do nich należy, zapytaj informatyka albo dostawcę programu, gdzie jest baza danych i jak się nazywa.
Co znalazłem u klienta na początku listopada
Z mojego doświadczenia: firma handlowa, kilka stanowisk, ERP na SQL Server w maszynie wirtualnej. Kopie zapasowe „były”, a na serwerze każdej nocy uruchamiało się zadanie o nazwie sugerującej konserwację i kopie. Sprawdzenie zajęło kilka minut i pokazało coś innego.
- Nocne zadanie robiło kopie kilku starych baz testowych, a nie bazy, na której firma pracowała. Pliki trafiały na ten sam dysk co bazy i były trzymane przez tydzień.
- Baza produkcyjna działała już na nowym serwerze, a plan kopii został na starym. Ostatnia pełna kopia bazy produkcyjnej pochodziła sprzed trzech miesięcy.
- Część zadań na starym serwerze kończyła się błędem codziennie. Powiadomienia o błędach nie trafiały do nikogo, więc nikt o nich nie wiedział.
- Udostępnione foldery z dokumentami firmy nie miały kopii od kilku lat.
Dlaczego kopia przestaje działać po cichu
Mechanizm jest podobny do wygasającego certyfikatu SSL: coś, co miało dziać się samo, przestaje się dziać i nic tego nie sygnalizuje. Najczęstsze przyczyny, które widzę przy programach na SQL Server:
- Przeniesienie bazy na nowy serwer albo do maszyny wirtualnej. Przenosi się baza, a zadania kopii zostają na starym serwerze.
- Plan kopii obejmuje wybrane bazy z nazwy. Po aktualizacji programu albo założeniu nowej firmy w programie baza ma inną nazwę i do planu nie trafia.
- Darmowa edycja SQL Server Express nie ma usługi SQL Server Agent, która w pozostałych edycjach uruchamia zadania według harmonogramu. Kopia musi być wtedy uruchamiana innym mechanizmem, na przykład harmonogramem zadań Windows albo modułem samego programu, i o tym łatwo zapomnieć.
- Zadanie kończy się błędem (brak miejsca na dysku, zmienione hasło do udziału sieciowego), a powiadomienie o błędzie nie ma adresata.
- Kopia powstaje, ale tylko na tym samym dysku albo serwerze co baza. Chroni przed pomyłką użytkownika, a nie przed awarią dysku, kradzieżą serwera czy szyfrowaniem danych przez złośliwe oprogramowanie.
Jak sprawdzić datę ostatniej kopii
SQL Server zapisuje historię każdej kopii, którą wykonał, w systemowej bazie msdb, w tabeli backupset. Wystarczy to odczytać. Zapytanie niczego nie zmienia, tylko czyta. Uruchamia się je w SQL Server Management Studio, zalogowanym na serwerze, na którym działa baza programu.
SELECT d.name AS baza,
MAX(CASE WHEN b.type = 'D' THEN b.backup_finish_date END) AS ostatnia_pelna,
MAX(CASE WHEN b.type = 'I' THEN b.backup_finish_date END) AS ostatnia_roznicowa,
MAX(CASE WHEN b.type = 'L' THEN b.backup_finish_date END) AS ostatni_dziennik
FROM sys.databases d
LEFT JOIN msdb.dbo.backupset b ON b.database_name = d.name
WHERE d.database_id > 4 -- pomija bazy systemowe
GROUP BY d.name
ORDER BY ostatnia_pelna;Typy w kolumnie type według dokumentacji Microsoft: D to pełna kopia bazy, I to kopia różnicowa, L to kopia dziennika transakcji.
Drugie zapytanie pokazuje, gdzie trafiły pliki ostatnich pełnych kopii. To ważne, bo kopia zapisana na dysku C: tego samego serwera wygląda w historii tak samo dobrze jak kopia wysłana poza budynek.
SELECT TOP 20 b.database_name AS baza, b.backup_finish_date AS koniec,
b.is_copy_only AS jednorazowa, m.physical_device_name AS plik
FROM msdb.dbo.backupset b
JOIN msdb.dbo.backupmediafamily m ON m.media_set_id = b.media_set_id
WHERE b.type = 'D'
ORDER BY b.backup_finish_date DESC;Jak czytać wynik
| Co widzisz | Co to znaczy | Co zrobić |
|---|---|---|
| Data z ostatniej doby, plik na innym serwerze lub udziale sieciowym | Kopie powstają i wychodzą poza serwer bazy | Sprawdzić, czy kopia się odtwarza (niżej) i czy jest też kopia poza budynkiem |
| Data z ostatniej doby, plik na tym samym serwerze | Kopia chroni przed pomyłką, nie przed awarią serwera ani szyfrowaniem danych | Dodać kopiowanie plików poza serwer |
| Data sprzed kilku dni lub tygodni | Mechanizm kopii przestał działać, a nikt tego nie zauważył | Od razu wykonać kopię ręcznie, potem znaleźć przyczynę |
| Brak daty (NULL) | SQL Server nigdy nie wykonał kopii tej bazy albo robi ją inne narzędzie | Ustalić, czym jest robiona kopia; jeśli niczym, to jest najpilniejsza sprawa |
Pusta kolumna nie zawsze oznacza brak kopii. Jeśli kopię całej maszyny wirtualnej robi osobne narzędzie, historia w msdb może jej nie zawierać. Wtedy dowodem jest raport z tego narzędzia, z datą ostatniej udanej kopii.
Kopia, która się nie odtwarza, nie jest kopią
Data w historii mówi, że kopia powstała. Nie mówi, że da się z niej odtworzyć dane. Są dwa poziomy sprawdzenia i warto znać różnicę między nimi.
- Sprawdza, czy plik kopii jest kompletny i czytelny
- Sprawdza sumy kontrolne, jeśli kopia je ma
- Nie odtwarza bazy i nie sprawdza struktury danych
- Trwa minuty, można robić po każdej kopii
- Baza powstaje naprawdę, obok produkcyjnej
- Widać, czy program się z nią łączy i czy dane są aktualne
- Pokazuje realny czas powrotu do pracy po awarii
- Wymaga miejsca na dysku, warto raz na kwartał
Dokumentacja Microsoft mówi wprost, że RESTORE VERIFYONLY nie próbuje sprawdzić struktury danych zapisanych w kopii. To dobry codzienny strażnik, ale nie zastępuje odtworzenia. Prawdziwy test robi się, odtwarzając kopię jako nową bazę o innej nazwie, na tym samym albo innym serwerze, i sprawdzając, czy da się w niej znaleźć wczorajsze dokumenty.
Lista na 10 minut
- 01Ustal serwer i nazwę bazyw programie albo u dostawcy; baz może być kilka, po jednej na firmę
- 02Zapytanie 1data ostatniej pełnej kopii każdej bazy
- 03Zapytanie 2gdzie leżą pliki kopii: ten sam serwer czy poza nim
- 04Historia zadańczy zadania kopii kończą się sukcesem i kto dostaje błędy
- 05RESTORE VERIFYONLYczy ostatni plik kopii jest czytelny
- 06Termin testu odtworzeniaw kalendarzu, raz na kwartał, z osobą odpowiedzialną
Pierwsze trzy kroki to tylko odczyt i nie wpływają na pracę programu. Wykonanie kopii ręcznie obciąża dysk przez kilka do kilkudziesięciu minut, więc lepiej zrobić je poza godzinami pracy.
FAQ: najczęstsze pytania
Jak często powinna powstawać kopia bazy ERP?
Co najmniej raz na dobę, po zakończeniu pracy. Ile danych firma może stracić, decyduje właściciel, a nie informatyk: jeśli utrata dnia pracy jest nie do przyjęcia, potrzebne są też kopie dziennika transakcji w ciągu dnia, które pozwalają odtworzyć bazę na wybraną godzinę.
Czy kopia na drugim dysku w tym samym serwerze wystarczy?
Nie. Chroni przed usunięciem danych przez pomyłkę, ale nie przed awarią serwera, pożarem, kradzieżą ani złośliwym oprogramowaniem, które szyfruje wszystko, do czego ma dostęp. Przynajmniej jedna kopia powinna leżeć poza serwerem bazy, a najlepiej także poza budynkiem.
Czy sprawdzenie może coś zepsuć w programie?
Oba zapytania z tego wpisu tylko czytają historię kopii z bazy msdb i nie zmieniają danych programu. Ostrożności wymaga dopiero wykonanie kopii albo test odtworzenia, bo obciążają dysk i zajmują miejsce. Te kroki warto zaplanować poza godzinami pracy.
Mój program ma własną funkcję kopii. Czy to wystarczy?
Może wystarczyć, jeśli wiadomo, kiedy ostatnio zadziałała, gdzie zapisuje plik i czy ktoś sprawdził odtworzenie. Funkcja w programie ma te same słabe punkty co każda inna: trzeba ją uruchamiać regularnie, a plik musi trafić poza serwer.
Kto powinien za to odpowiadać?
Jedna konkretna osoba, wpisana z nazwiska: firma informatyczna w umowie opieki albo pracownik. Odpowiedzialność obejmuje nie tylko ustawienie kopii, ale też odbieranie powiadomień o błędach i test odtworzenia w ustalonym terminie. Bez tego kopia działa tylko do pierwszej zmiany na serwerze.
Powiązane artykuły
Wygasł Ci certyfikat SSL i nikt tego nie zauważył. Od marca 2026 będzie się to zdarzać częściej
Certyfikat, który miał odnowić się sam, potrafi tego nie zrobić. Serwer nadal odpowiada, monitoring dostępności nadal po…
Opieka ITUmowa na opiekę IT: dziewięć zapisów, które trzeba przeczytać przed podpisaniem
Większość umów o obsługę informatyczną czyta się dopiero wtedy, gdy coś poszło nie tak. Wtedy okazuje się, że „niezwłocz…
Opieka ITIle kosztuje opieka IT dla firmy: cenniki trzech dostawców i to, czego w nich nie ma
Pytanie „ile kosztuje opieka IT" ma w polskim internecie setki odpowiedzi i prawie żadnej z konkretną kwotą. Wszedłem wi…