To jest mój pierwszy post DBA.SE, więc proszę o poinformowanie mnie o wszelkich błędach, dzięki!
Jestem nowym DBA (nie informatykiem, po prostu nikt inny w firmie tego nie robi), więc im bardziej podstawowe wyjaśnienie, tym lepiej. Czytałem o strategiach tworzenia kopii zapasowych baz danych (lub, jak nauczyłem się je nazywać, „strategiach przywracania”). Rozumiem, co robią kopie zapasowe dziennika pełnego, różnicowego i dziennika transakcji, ale chcę wiedzieć, dlaczego różnicowa kopia zapasowa może być oparta tylko na najnowszej pełnej kopii zapasowej.
Jeśli różnicowa kopia zapasowa to wszystko, co zmieniło się od czasu ostatniej pełnej kopii zapasowej, to dlaczego różnicowanie nie może być oparte na żadnej wybranej przeze mnie kopii zapasowej? Aby być bardziej zrozumiałym, pytam o określenie bazy podczas tworzenia kopii zapasowej , a nie podczas przywracania. Zakładam, że podczas przywracania wybrałbyś prawidłową bazę i odpowiedni mechanizm różnicowy, aby wykonać przywracanie (nie używając mechanizmu różnicowego wykonanego z bazy B do przywracania z bazy A).
Jaki jest powód, który uniemożliwia tę funkcjonalność? Myślę, że musi być jakiś powód, po prostu nie wiem co to jest.
Uwaga: Rozumiem, że nie można określić podstawy, ale moje pytanie brzmi: dlaczego nie ? (Nie jestem również zainteresowany dyskusją na temat „dlaczego miałbyś?”)
Analogia
Oto analogia do tego, jak rozumiem różnicową kopię zapasową:
Mam plik Excel z niektórymi danymi w komórkach.
Pierwszego dnia robię kopię tego pliku i przechowuję go w innym miejscu („pełna kopia zapasowa”).
W dniu 2 patrzę na plik i porównuję go z kopią zapasową, którą wykonałem w dniu 1, i odnotowuję wszystkie zmienione komórki oraz ich nowe wartości („różnicowa kopia zapasowa”). Nie odnotowuję każdej zmiany dokonanej w komórce, a jedynie jej ostatecznej wartości. Gdyby komórka A1 zaczynała się jako „Alfred”, zmieniła się na „Betty”, „Charlie”, a następnie „Dave”, chciałbym tylko zauważyć, że „A1 to teraz Dave”.
W dniu 3 ponownie porównuję bieżący plik z plikiem kopii zapasowej i odnotowuję zmiany (kolejna „różnicowa kopia zapasowa” z tą samą bazą co dzień 2). Ponownie, odnotowując tylko końcowe wartości na komórkę w obserwowanym czasie, nie wszystkie wartości, które komórka występowała przez cały dzień.
W dniu 4 ponownie porównuję i ponownie odnotowuję zmiany. Kontynuując z komórką A1, teraz mówi „Sarah”, nawet jeśli w ciągu dnia było 10 innych imion, a wszystko, co zauważam, to „Teraz A1 to Sarah”.
Piątego dnia mój plik się popsuł; więc patrzę na kopię zapasową, którą wykonałem w dniu 1, a następnie w stanach końcowych zanotowałem w dniu 4, i stosuję zmiany zanotowane w kopii zapasowej, a teraz mam plik „przywrócony” do stanu z dnia 4 Tak więc patrzę na kopię zapasową wykonaną pierwszego dnia, widzę, że w czwartym dniu komórka A1 zakończyła się jako „Sarah” i zmieniam komórkę zapasową A1 na „Sarah”.
Dlaczego miałoby to mieć znaczenie, jeśli wykonałem kolejną kopię zapasową („pełną”) pliku w dniu 2? Dlaczego nadal nie byłoby możliwe porównanie (odczytanie, „różnicowa kopia zapasowa”) pliku w dniu 3 lub 4 z kopią wykonaną w dniu 1? Jak rozumiem, SQL Server wymagałby ode mnie porównania (podczas wykonywania innej różnicowej kopii zapasowej) z pełną kopią zapasową wykonaną w dniu 2 (jeśli taka została utworzona) - żadna inna opcja.
COPY_ONLY
- Jeśli OPCOPY_ONLY
miałby wykonać regularną pełną kopię zapasową w dniu 1 i pełną kopię w dniu 2, to jakie problemy byłyby spowodowane przez zastosowanie późniejszej różnicy z tej samej bazy do kopii zapasowej dnia 2?