Przejdź do treści
SYSTEMBOX
+48 570 923 234pn. do pt. 8 do 17Umów rozmowę
BEZPIECZEŃSTWO · KOPIE ZAPASOWE · LISTOPAD 2026

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ą.

·7 min czytania·Bezpieczeństwo

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:

  1. Przeniesienie bazy na nowy serwer albo do maszyny wirtualnej. Przenosi się baza, a zadania kopii zostają na starym serwerze.
  2. 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.
  3. 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ć.
  4. 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.
  5. 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.

Zapytanie 1: ostatnia kopia każdej bazy
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.

Zapytanie 2: dokąd trafiły ostatnie pełne kopie
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

Ostatnia pełna kopia bazy produkcyjnej: co oznacza wynik
Co widziszCo to znaczyCo zrobić
Data z ostatniej doby, plik na innym serwerze lub udziale sieciowymKopie powstają i wychodzą poza serwer bazySprawdzić, czy kopia się odtwarza (niżej) i czy jest też kopia poza budynkiem
Data z ostatniej doby, plik na tym samym serwerzeKopia chroni przed pomyłką, nie przed awarią serwera ani szyfrowaniem danychDodać kopiowanie plików poza serwer
Data sprzed kilku dni lub tygodniMechanizm 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ędzieUstalić, 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.

Szybka weryfikacja kontra prawdziwy test odtworzenia
RESTORE VERIFYONLY
  • 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
Odtworzenie pod inną nazwą
  • 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

Sprawdzenie kopii bazy ERP krok po kroku
  1. 01Ustal serwer i nazwę bazyw programie albo u dostawcy; baz może być kilka, po jednej na firmę
  2. 02Zapytanie 1data ostatniej pełnej kopii każdej bazy
  3. 03Zapytanie 2gdzie leżą pliki kopii: ten sam serwer czy poza nim
  4. 04Historia zadańczy zadania kopii kończą się sukcesem i kto dostaje błędy
  5. 05RESTORE VERIFYONLYczy ostatni plik kopii jest czytelny
  6. 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

Kontakt · bezpośrednio do mnie

Trzydzieści minut. Bezpłatnie. Sprawdzimy, czy jest o czym rozmawiać.

Opowiedz mi, jak dziś wygląda sprzedaż, ofertowanie albo obsługa zamówień i gdzie ginie czas. Powiem, co da się zrobić szybko, co wymaga systemu na zamówienie, a czego nie warto ruszać. Po rozmowie rozpisuję zakres i przygotowuję wycenę na piśmie. Bez prezentacji i bez ticketów.

E-mailkontakt@systembox.pl
Telefon+48 570 923 234 · pn. do pt. 8 do 17 · odbieram ja
Po godzinach+48 85 600 02 67 · odbiera Ada, asystentka głosowa
Biuroul. Wąska 4, lok. U1, Białystok · dojazd i godziny

Wiadomość trafia do mnie i do mojego CRM, nic więcej. Bez newslettera i bez odsprzedaży adresu.