Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:Program SQL Server w systemie Windows
Program SQL Server zapewnia obsługę Usługi kopiowania woluminów w tle (VSS) poprzez udostępnienie modułu zapisu SQL, dzięki czemu aplikacja kopii zapasowej innej firmy może używać platformy VSS do tworzenia kopii zapasowych plików bazy danych. W tym dokumencie opisano składnik zapisywania SQL i jego rolę w procesie tworzenia i przywracania migawek usługi VSS dla baz danych programu SQL Server. Przechwytuje również szczegółowe informacje na temat konfigurowania i używania SQL Writer do pracy z aplikacjami kopii zapasowych w frameworku VSS.
Infrastruktura usługi VSS
Usługa VSS udostępnia infrastrukturę systemu do uruchamiania aplikacji VSS w systemach Windows. Chociaż w dużej mierze przezroczyste zarówno dla użytkowników, jak i deweloperów, VSS:
- Koordynuje działania dostawców, autorów i żądających podczas tworzenia i używania kopii migawkowych.
- Zapewnia domyślnego usługodawcę systemu.
- Implementuje funkcjonalność sterowników niskiego poziomu niezbędną do pracy dowolnego dostawcy.
Usługa VSS uruchamia się na żądanie, dlatego ta usługa musi być włączona, aby operacje usługi VSS zakończyły się pomyślnie.
Składniki usługi VSS
VSS koordynuje działania następujących składników współpracujących:
Dostawcy posiadają dane kopii zapasowych i tworzą kopie zapasowe.
Autorzy to aplikacje, które zmieniają dane i uczestniczą w procesie synchronizacji kopii w tle.
Żądania inicjują tworzenie i niszczenie kopii w tle. Projekt koncentruje się na scenariuszu, w którym żądający jest aplikacją do tworzenia kopii zapasowych.
Usługa VSS zapewnia koordynację między tymi stronami:
Na tym diagramie przedstawiono wszystkie składniki uczestniczące w typowym działaniu migawek usługi VSS. W takim scenariuszu program SQL Server (w tym składnik zapisywania SQL) działa jako składnik zapisywania w jednym z pól składników zapisywania. Inne takie programy mogą obejmować Exchange Server itp.
Interfejs urządzenia wirtualnego: program SQL Server udostępnia interfejs programowania aplikacji o nazwie Virtual Device Interface (VDI), który pomaga niezależnym dostawcom oprogramowania zintegrować program SQL Server z ich produktami, zapewniając obsługę operacji tworzenia kopii zapasowych i przywracania. Te interfejsy API są zaprojektowane w celu zapewnienia maksymalnej niezawodności i wydajności oraz obsługi pełnego zakresu funkcji tworzenia kopii zapasowych i przywracania kopii zapasowych programu SQL Server, w tym pełnego zakresu funkcji tworzenia kopii zapasowych na gorąco i migawek. Aby uzyskać więcej informacji, zobacz Sql Server 2005 Virtual Backup Device Interface Specification (Specyfikacja interfejsu wirtualnego urządzenia kopii zapasowej programu SQL Server 2005).
Żądający: proces (zautomatyzowany lub graficzny interfejs użytkownika), który żąda wykonania co najmniej jednego zestawu migawek z co najmniej jednego oryginalnego woluminu. W tym artykule obiekt żądający jest również używany do oznaczania aplikacji kopii zapasowej, która tworzy migawkę baz danych programu SQL Server.
Aby uzyskać więcej informacji, zobacz Usługa kopiowania woluminów w tle.
Składnik zapisywania SQL
Moduł zapisywania SQL to składnik usługi VSS udostępniany przez wystąpienie programu SQL Server. Obsługuje on interakcję usługi VSS z programem SQL Server. Składnik zapisywania SQL jest dostarczany z programem SQL Server jako usługą autonomiczną i jest instalowany w ramach instalacji programu SQL Server.
Rola składnika zapisywania SQL w operacji tworzenia kopii zapasowej migawki usługi VSS:
Konfiguracja SQL pisarza
Usługa zapisywania SQL jest instalowana w systemie w ramach instalacji programu SQL Server i jest skonfigurowana do automatycznego uruchamiania po uruchomieniu systemu Windows.
Konto usługi zapisywania SQL
Podczas instalacji konto SQL Writer jest instalowane, aby używać konta Lokalnego Systemu. Ponieważ składnik zapisywania SQL musi komunikować się z programem SQL Server przy użyciu ekskluzywnych interfejsów API VDI, konto składnika zapisywania SQL musi mieć wystarczające prawa dostępu zarówno dla programu SQL Server, jak i usługi VSS. Skonfigurowanie usługi jako konta systemu lokalnego zapewnia wystarczające prawa do poprawnego działania usługi.
Ważne
Upewnij się, że usługa pisania SQL działa przez konto lokalne systemowe, a konto SQL Server NT SERVICE\SQLWriter jest członkiem roli sysadmin.
Ponowne włączanie i uruchamianie modułu zapisywania SQL
Domyślnie usługa zapisywania SQL jest włączona i uruchamiana automatycznie. Jeśli ta konfiguracja została zmodyfikowana, należy wykonać następujące kroki, aby przywrócić ustawienia domyślne:
Usługę zapisywania SQL można włączyć, oznaczając tę usługę jako Automatyczna. Aby otworzyć usługi za pomocą panelu sterowania, wybierz pozycję Start, wybierz pozycję Panel sterowania, kliknij dwukrotnie pozycję Narzędzia administracyjne, a następnie kliknij dwukrotnie pozycję Usługi. W okienku Usługi kliknij dwukrotnie usługę SQL writer i zmodyfikuj właściwość Typ uruchamiania na Automatyczny.
Następnie należy uruchomić usługę, wybierając przycisk Start w obszarze właściwości Stan usługi na ekranie właściwości usługi, o którym wspomniano wcześniej.
Uwaga
W niektórych przypadkach, gdy jest zainstalowane wystąpienie programu SQL Server Express, a aplikacja korzysta z funkcji instancji użytkownika, moduł zapisu SQL może zostać automatycznie uruchomiony przez program SQL Server. Jest to wykonywane w celu ułatwienia wyliczania tych wystąpień użytkownika podczas operacji tworzenia kopii zapasowej usługi VSS.
Funkcje obsługiwane przez SQL Writer
Pełnotekstowy: moduł zapisywania SQL zgłasza kontenery katalogów pełnotekstowych ze specyfikacjami plików rekurencyjnych w ramach składników bazy danych w dokumencie metadanych modułu zapisywania. Są one automatycznie dołączane do kopii zapasowej po wybraniu składnika bazy danych.
Różnicowa kopia zapasowa i przywracanie: SQL Writer obsługuje różnicowe kopie zapasowe i przywracanie za pośrednictwem dwóch mechanizmów różnicowych usługi VSS.
Plik częściowy: pisarz SQL używa mechanizmu pliku częściowego usługi VSS do raportowania zmienionych zakresów bajtów w swoich plikach bazy danych.
Różnicowy plik o czas ostatniej modyfikacji: składnik zapisywania SQL używa mechanizmu vsS Differenced File by Last Modify Time do raportowania zmienionych plików w wykazach pełnotekstowych.
Przywracanie z przenoszeniem: moduł zapisu SQL obsługuje specyfikację Nowego Celu usługi VSS podczas przywracania. Nowa specyfikacja docelowa umożliwia przeniesienie pliku bazy danych/dziennika lub kontenera wykazu pełnotekstowego w ramach operacji przywracania.
Zmiana nazwy bazy danych: może być konieczne przywrócenie bazy danych programu SQL Server o nowej nazwie, zwłaszcza jeśli baza danych ma zostać przywrócona obok oryginalnej bazy danych. Zapis SQL obsługuje zmianę nazwy bazy danych podczas operacji przywracania, o ile baza danych pozostaje w oryginalnym wystąpieniu SQL.
Kopia zapasowa tylko do kopiowania: czasami konieczne jest utworzenie kopii zapasowej przeznaczonej do celów specjalnych, na przykład w przypadku konieczności utworzenia kopii bazy danych do celów testowych. Ta kopia zapasowa nie powinna mieć wpływu na ogólne procedury tworzenia kopii zapasowych i przywracania bazy danych.
COPY_ONLYUżycie opcji określa, że kopia zapasowa jest wykonywana poza pasmem i nie powinna mieć wpływu na normalną sekwencję kopii zapasowych. Pisarz SQL obsługuje kopię zapasową typu tylko do odczytu w wystąpieniach programu SQL Server.Autorecovery migawki bazy danych: zazwyczaj migawka bazy danych programu SQL Server uzyskanej przy użyciu platformy VSS jest w stanie nieodzyskiwania. Nie można bezpiecznie uzyskać dostępu do danych w migawce, zanim przejdzie ona przez fazę odzyskiwania, aby wycofać transakcje w locie i umieścić bazę danych w spójnym stanie. Aplikacja do tworzenia kopii zapasowych VSS może zażądać automatycznego przywracania migawek jako część procesu tworzenia migawek.
Te nowe funkcje i ich użycie zostały szczegółowo opisane w temacie Szczegóły opcji tworzenia kopii zapasowych i przywracania w tym artykule.
Co nie jest obsługiwane
- Kopie zapasowe dzienników nie są obsługiwane przez składnik zapisywania SQL.
- Tworzenie kopii zapasowej plików i grup plików nie jest obsługiwane.
- Przywracanie strony nie jest obsługiwane.
- Migawki bazy danych nie są obsługiwane i są ignorowane podczas tworzenia migawek VSS komponentowych i niekomponentowych.
- Bazy danych z włączoną funkcją automatycznego zamykania lub bazy danych z włączonym zamykaniem.
- System Linux nie udostępnia platformy VSS, dlatego moduł SQL nie jest dostępny w systemie Linux.
W poniższej tabeli wymieniono rodzaje kopii zapasowych migawek obsługiwanych przez składnik zapisywania SQL/programu SQL Server współpracującego z platformą VSS dla wszystkich wersji programu SQL Server w systemie Windows.
| Operacja tworzenia kopii zapasowej i przywracania | Oparte na składnikach | Nieskładnikowe |
|---|---|---|
| Pełna kopia zapasowa danych (W tym wykaz pełnotekstowy) |
Tak | Tak |
| Pełne przywrócenie | Tak | Tak |
| Pełne przywrócenie (bez przywracania danych) | Tak | Nie. |
| Różnicowa kopia zapasowa | Tak | Nie. |
| Przywracanie różnicowe | Tak | Nie. |
| Przywracanie z przenoszeniem | Tak | Nie. |
| Zmiana nazwy bazy danych | Tak | Nie. |
| Kopiuj tylko kopię zapasową | Tak | Nie. |
| Migawki odzyskane automatycznie | Tak | Nie. |
| Kopia zapasowa dziennika | Nie. | Nie. |
| Migawki bazy danych | Nie. | Nie. |
| Automatyczne zamykanie baz danych Bazy danych z zamknięciem |
Tak | Nie. |
| Bazy danych grup dostępności | Tak | Nie na drugoplanowej |
Operacje tworzenia kopii zapasowych
Program SQL Server (przy użyciu składnika zapisywania SQL) obsługuje następujące tryby operacji tworzenia kopii zapasowych opartych na usłudze VSS:
- Nieskładnikowe
- Oparte na składnikach
Obsługa wersji
Pisarz SQL jest dostarczany jako część systemu SQL Server i obsługuje tylko instancje SQL Server. Składnik zapisywania SQL wylicza również wystąpienia programu SQL Server Express, w tym wystąpienia użytkowników uruchamiane przez wersję SQL Server Express.
Nieskładnikowe operacje tworzenia kopii zapasowych
Nieskładnikowe kopie zapasowe niejawnie wybierają bazy danych przy użyciu listy woluminów w zestawie migawek. Składnik zapisywania SQL sprawdza rozdarte bazy danych, co zgłasza błąd w przypadku znalezienia. Rozdarta baza danych jest bazą danych, w której jest wybierany podzbiór plików na liście woluminów.
W modelu nieskładnikowym obsługiwane są tylko bazy danych z prostym modelem odzyskiwania. Przerzucanie po przywróceniu nie jest obsługiwane.
Operacje tworzenia kopii zapasowych oparte na składnikach
Kopie zapasowe oparte na komponentach są preferowane i zalecane w przypadku systemu SQL Writer, ponieważ aplikacja (aplikacja do tworzenia kopii zapasowych usługi VSS) jawnie wybiera bazy danych z metadanych zwracanych przez system SQL Writer. Zestaw migawek powinien zawierać wszystkie woluminy niezbędne do utworzenia kopii zapasowych tych baz danych. Infrastruktura usługi VSS nie dodaje automatycznie woluminów wymaganych dla wybranego zestawu baz danych. Wszystkie woluminy zapasowe powinny być uwzględnione w zestawie migawek woluminów. Jest to odpowiedzialność aplikacji do tworzenia kopii zapasowych, aby upewnić się, że wszystkie woluminy zapasowe znajdują się w zestawie migawek. Moduł zapisu SQL wykrywa rozdarte bazy danych (z woluminami zapasowymi poza zestawem migawek) i powoduje niepowodzenie tworzenia kopii zapasowej.
W pozostałej części tej sekcji założono, że kopie zapasowe oparte na składnikach są używane w ramach procesu tworzenia migawek usługi VSS dla programu SQL Server.
Proces tworzenia migawki
Struktura usługi VSS koordynuje działania osoby żądającej (aplikacji kopii zapasowej) i składnika zapisywania SQL podczas tworzenia migawek programu SQL Server. Aby umożliwić tę koordynację, platforma VSS definiuje interfejsy modułu żądającego i modułu zapisywania. Te interfejsy powinny być implementowane przez aplikacje żądające i pisarzy. Komponent SQL implementuje niezbędne interfejsy dla zapisywania. W ramach procesu tworzenia migawki interfejsy składnika zapisywania SQL są wywoływane przez platformę VSS. Moduł SQL zapisujący współdziała z wystąpieniami programu SQL Server w systemie, aby ułatwić tworzenie migawek.
Platforma VSS definiuje zestaw interfejsów API do użycia przez aplikację tworzącą żądania lub aplikację kopii zapasowej. Twórca aplikacji do tworzenia kopii zapasowych musi postępować zgodnie z tymi wzorcami wywoływania interfejsu API, aby pracować z procesem tworzenia migawek w ramach platformy VSS. W następnych sekcjach opisano proces tworzenia migawki z punktu widzenia usługi piszącej SQL. Szczegółowo szczegółowo opisano również niektóre wewnętrzne interakcje między obiektem żądającego, strukturą VSS, modułem zapisywania SQL i wystąpieniami programu SQL Server.
Aby uzyskać więcej informacji na temat tych kroków i szczegółowych informacji na temat interfejsów platformy VSS, zobacz Usługa kopiowania woluminów w tle (VSS).
Uwaga
Zakłada się, że znasz ogólnie strukturę VSS i proces tworzenia kopii zapasowych. Te sekcje są dostarczane jako dodatkowe informacje o tym, jak składnik zapisywania SQL uczestniczy w procesie tworzenia kopii zapasowej usługi VSS.
Proces tworzenia migawki
Na poniższej ilustracji przedstawiono schemat przepływu danych podczas operacji tworzenia migawki i kopii zapasowej opartej na składnikach.
Aby w pełni zrozumieć podstawowe zadania związane z wykonywaniem kopii zapasowej, warto podzielić to omówienie na następujące fazy:
- Inicjowanie kopii zapasowej
- Faza odnajdywania kopii zapasowych
- Zadania przygotowawcze do kopii zapasowej
- Rzeczywista kopia zapasowa plików
- Kończenie tworzenia kopii zapasowej
Inicjowanie kopii zapasowej
W tej fazie tworzenia kopii zapasowej moduł żądający (aplikacja kopii zapasowej) łączy się z interfejsem migawki IvssBackupComponents i inicjuje go w ramach przygotowań do utworzenia kopii zapasowej. Wywołuje również interfejs API VSS IVssGatherWriterMetadata, aby poinformować platformę VSS o zbieraniu metadanych ze wszystkich modułów zapisujących.
Platforma VSS wywołuje każdego z zarejestrowanych dostawców, w tym dostawcę SQL, dla metadanych dostawcy przy użyciu zdarzenia OnIdentify. Mechanizm zapisu SQL wysyła zapytania do wystąpień programu SQL Server, aby uzyskać informacje o metadanych kopii zapasowej dla każdej bazy danych i utworzyć Dokument Metadanych Mechanizmu Zapisującego. Ta faza jest również określana jako wyliczenie metadanych.
Dokument metadanych modułu zapisywania to dokument zawierający informacje przekazywane z modułu zapisywania do aplikacji żądającej (kopia zapasowa). Dokument metadanych pisarza zawiera następujące informacje:
- Identyfikator aplikacji i przyjazna nazwa
- Gdzie istnieją pliki i składniki
- Które pliki należy uwzględnić i wykluczyć w kopii zapasowej
- Jakie opcje powinny być używane w czasie przywracania
Jest on przekazywany z powrotem do osoby żądającej za pośrednictwem platformy VSS.
Odnajdywanie kopii zapasowych
W tej fazie obiekt żądający analizuje dokument metadanych modułu zapisywania i tworzy i wypełnia dokument składnika kopii zapasowej przy użyciu każdego składnika, którego kopię zapasową należy utworzyć. Określa również wymagane opcje i parametry kopii zapasowej w ramach tego dokumentu. Dla piszącego SQL każde wystąpienie bazy danych, którego kopię zapasową należy utworzyć, jest oddzielnym składnikiem.
Dokument dotyczący składników kopii zapasowej
Jest to dokument XML utworzony przez osoby żądającej (przy użyciu interfejsu IVssBackupComponents ) w trakcie konfigurowania operacji przywracania lub tworzenia kopii zapasowej. Dokument dotyczący składników kopii zapasowej zawiera listę jawnie dołączonych składników od jednego lub więcej dostawców zawartości, uczestniczących w operacji tworzenia kopii zapasowej lub przywracania. Nie zawiera niejawnie dołączonych informacji o składnikach. Natomiast dokument metadanych składnika zapisywania zawiera tylko składniki składnika zapisywania, które mogą uczestniczyć w kopii zapasowej. Szczegóły strukturalne dokumentu składnika kopii zapasowej zostały opisane w dokumentacji interfejsu API usługi VSS.
Zadania przed tworzeniem kopii zapasowej
Zadania wstępnego tworzenia kopii zapasowej w usłudze VSS koncentrują się na tworzeniu kopii w tle woluminów zawierających dane na potrzeby tworzenia kopii zapasowej. Aplikacja kopii zapasowej zapisuje dane z kopii w tle, a nie rzeczywistego woluminu.
Zadający zwykle czekają na autorów podczas przygotowywania do tworzenia kopii zapasowej i podczas tworzenia kopii woluminowej. Jeśli składnik zapisywania SQL uczestniczy w operacji tworzenia kopii zapasowej, musi skonfigurować jego pliki, a także być gotowy do tworzenia kopii zapasowych i kopii w tle.
Przygotowanie do utworzenia kopii zapasowej
Żądający musi ustawić typ operacji tworzenia kopii zapasowej, która ma zostać wykonana (IVssBackupComponents::SetBackupState), a następnie powiadamia dostawców za pomocą usługi VSS, aby przygotowali się do operacji tworzenia kopii zapasowej przy użyciu polecenia IVssBackupComponents::PrepareForBackup.
Składnik zapisywania SQL ma dostęp do dokumentu dotyczącego kopii zapasowej, który szczegółowo opisuje, które bazy danych należy zabezpieczyć. Wszystkie woluminy zapasowe powinny być uwzględnione w zestawie migawek woluminów. Pisarz SQL wykrywa rozdarte bazy danych (z woluminami zapasowymi poza zestawem migawek) i powoduje niepowodzenie kopii zapasowej podczas zdarzenia PostSnapshot.
Rzeczywista kopia zapasowa plików
W tej fazie żądający może w razie potrzeby przenieść dane na nośnik kopii zapasowej. Interakcje na tym etapie są między wnioskodawcą a infrastrukturą VSS. Moduł zapisywania SQL nie jest zaangażowany.
- Uzyskaj status pisarza. Zwraca stan modułów zapisujących. Osoba żądająca może potrzebować obsłużyć ewentualne błędy w tym miejscu.
- Wykonaj kopię zapasową.
W razie potrzeby wnioskodawca może przenieść dane na nośniki kopii zapasowych w tym momencie.
Kopia zapasowa ukończona
To zdarzenie wskazuje, że tworzenie kopii zapasowej zostało ukończone pomyślnie.
Jest to również czas, w którym moduł zapisywania SQL może zatwierdzić kopię zapasową jako bazę różnicową, jeśli bieżąca kopia zapasowa jest pełną kopią zapasową bazy danych (a nie kopią zapasową tylko do kopiowania).
Uwaga
Wnioskodawca powinien wysłać to zdarzenie (zdarzenie Ukończenie tworzenia kopii zapasowej) w sposób jednoznaczny, aby umożliwić składnikowi zapisywania SQL zatwierdzanie tworzenia bazowych kopii zapasowych różnicowych. Jeśli to zdarzenie nie zostanie odebrane, utworzona kopia zapasowa nie jest kwalifikowaną różnicową kopią zapasową bazową.
Zapisz metadane pisarza
Żądający powinien zapisać dokument składnika kopii zapasowej i metadane kopii zapasowej składników wraz z danymi z migawki. Te metadane modułu zapisywania są wymagane przez moduł zapisywania SQL/program SQL Server na potrzeby operacji przywracania.
Zakończenie tworzenia kopii zapasowej
Żądający kończy kopię w tle, zwalniając interfejs IVssBackupComponents lub wywołując IVssBackupComponents::DeleteSnapshots.
Dokument metadanych zapisującego SQL
Jest to dokument XML utworzony przez moduł zapisywania (w tym przypadku składnik zapisywania SQL) przy użyciu interfejsu IVssCreateWriterMetadata i zawierający informacje o stanie i składnikach składnika zapisywania. Szczegóły strukturalne dokumentu metadanych autora zostały opisane w dokumentacji API VSS. Poniżej przedstawiono niektóre szczegóły dokumentu metadanych składnika zapisywania SQL.
Informacje identyfikacyjne składnika zapisywania
- Nazwa składnika zapisywania — L"SqlServerWriter"
- Identyfikator klasy zapisywania — 0xa65faa63, 0x5ea8, 0x4ebc, 0x9d, 0xbd, 0xa0, 0xc4, 0xdb, 0x26, 0x91, 0x2a
- Identyfikator wystąpienia zapisu — L"SQL Server:SQLWriter"
- VSSUsageType — VSS_UT_USERDATA
- VSSSourceType — VSS_ST_TRANSACTEDDB
Informacje o poziomie składnika zapisywania — VSS_APP_BACK_END
Specyfikacja metody przywracania — VSS_RME_RESTORE_IF_CAN_REPLACE.
Obsługiwany schemat kopii zapasowej (IVssCreateWriterMetadata::SetBackupSchema API)
- VSS_BS_DIFFERENTIAL — różnicowa kopia zapasowa
- VSS_BS_TIMESTAMPED — oparte na znacznikach czasu — dla plików wykazu pełnotekstowego.
- VSS_BS_LAST_MODIFY — różnicowa kopia zapasowa oparta na czasie ostatniej modyfikacji,
- VSS_BS_WRITER_SUPPORTS_NEW_TARGET — obsługuje nową opcję lokalizacji docelowej.
- VSS_BS_WRITER_SUPPORTS_RESTORE_WITH_MOVE — obsługuje funkcję przywracania "z przenoszeniem"
- VSS_BS_COPY — obsługuje opcję tworzenia kopii zapasowej tylko do kopiowania.
Informacje o poziomie składnika (zawierają informacje specyficzne dla poziomu składnika udostępniane przez writer SQL)
- Typ — VSS_CT_FILEGROUP
- Nazwa — nazwa składnika (nazwa bazy danych)
- Ścieżka logiczna — wystąpienia serwera (w postaci "server\instance-name" dla nazwanych wystąpień i "serwera" dla wystąpienia domyślnego).
- Flagi składników
- VSS_CF_APP_ROLLBACK_RECOVERY — wskazuje, że migawki programu SQL Server zawsze wymagają fazy "odzyskiwania", aby pliki były spójne i możliwe do użycia w scenariuszach niezwiązanych z tworzeniem kopii zapasowych (czyli wycofywaniem aplikacji).
- Wybór — prawda
- Dostępne do przywrócenia — Tak
- Obsługiwane metody przywracania — VSS_RME_RESTORE_IF_CAN_REPLACE
Jedynym rozszerzeniem struktury zestawu składników w programie SQL Server jest wprowadzenie wykazów pełnotekstowych. Wykazy pełnotekstowe to katalogi kontenerów, których nie można wyrazić jako bazy danych lub plików dziennika usługi VSS, biorąc pod uwagę, że baza danych i pliki dziennika usługi VSS nie mają specyfikacji cyklicznego. W związku z tym składnik zapisywania SQL używa składnika grupy plików VSS (VSS_CT_FILEGROUP) do reprezentowania składnika na poziomie bazy danych i plików grupy plików do reprezentowania bazy danych, dziennika i plików wykazu pełnotekstowego.
Przykładowy dokument metadanych modułu zapisywania znajduje się na końcu tego dokumentu.
Inicjowanie migawki
Moduł żądający inicjuje proces tworzenia migawki przez wywołanie interfejsu DoSnapshotSetplatformy VSS .
Utwórz migawkę
Ta faza obejmuje szereg interakcji między platformą VSS a modułem zapisywania SQL.
Przygotowanie do tworzenia migawki. Składnik zapisujący SQL wywołuje SQL Server w celu przygotowania do utworzenia migawki.
Zamrozić! Pisarz SQL wywołuje SQL Server, aby zamrozić wszystkie operacje we/wy dla każdej z baz danych ujętych w migawce. Gdy zdarzenie zamrożenia wraca do platformy VSS, VSS tworzy migawkę.
Rozmrażanie. W tym zdarzeniu, składnik zapisywania SQL wywołuje instancje SQL Server w celu rozmrożenia lub wznowienia normalnych operacji we/wy.
Faza tworzenia migawki trwa mniej niż 60 sekund, aby zapobiec blokowaniu wszystkich zapisów w bazie danych.
Po migawce
Jeśli dla migawki jest potrzebne automatyczne odzyskiwanie, składnik zapisywania SQL wykonuje automatyczne odzyskiwanie dla każdej bazy danych, która została wybrana do migawki. Aby uzyskać szczegółowe wyjaśnienie, zobacz Automatycznie odzyskane migawki.
Proces przywracania
W tej sekcji opisano przepływ pracy operacji przywracania i różne kroki.
Przepływ pracy przywracania operacji
Na poniższej ilustracji przedstawiono diagram przepływu danych podczas operacji przywracania usługi VSS.
Aby bardziej zrozumieć podstawowe zadania związane z wykonywaniem przywracania, warto podzielić ten przegląd na następujące sekcje:
- Przywracanie inicjalizacji
- Przygotowywanie do przywrócenia
- Rzeczywiste przywracanie pliku
- Przywracanie czyszczenia i kończenia
We wszystkich scenariuszach przywracania opartych na składnikach VSS przywracanie bazy danych jest obsługiwane przez moduł zapisywania SQL i składa się z dwóch różnych faz.
- Przywracanie: faza wstępna: moduł SQL obsługuje walidację, zamykanie dojść do plików itp.
- Po przywróceniu: pisarz SQL dołącza bazę danych i w razie potrzeby wykonuje odzyskiwanie awaryjne.
Między tymi dwoma fazami aplikacja kopii zapasowej jest odpowiedzialna za przenoszenie odpowiednich danych poniżej języka SQL.
Przywrócenie inicjalizacji
W fazie inicjowania przywracania żądający musi mieć dostęp do dokumentów dotyczących składników kopii zapasowej.
Dokument składnika kopii zapasowej generowany podczas operacji tworzenia kopii zapasowej jest przechowywany jako część danych kopii zapasowej. Aplikacja do tworzenia kopii zapasowych musi przekazać te dane z powrotem do platformy VSS. Moduł zapisu SQL uzyskuje dostęp do tych danych na początku procesu przywracania.
Przygotowanie do przywrócenia
Gdy żądający przygotowuje się do procesu przywracania, używa przechowywanego dokumentu składników kopii zapasowej, aby określić, co należy przywrócić i jak. Żądający wybiera składniki do przywrócenia i ustawia odpowiednie opcje przywracania w razie potrzeby.
Jeśli aplikacja kopii zapasowej zamierza zastosować różnicowe kopie zapasowe lub kopie zapasowe dziennika na podstawie bieżącej operacji przywracania (czyli przywracanie bezodzyskiwania jest wymagane), należy ustawić następującą opcję jako część tworzenia składnika dla każdej przywracanej bazy danych.
IVssBackupComponents::SetAdditionalRestores(true)
Gdy wszystkie potrzebne szczegóły zostaną ustawione w dokumencie składnika kopii zapasowej, żądający wykonuje IVssBackupComponents::PreRestore wywołanie w celu wygenerowania zdarzenia wstępnego przywrócenia za pomocą VSS, która jest obsługiwana przez moduły zapisujące.
Program do tworzenia zapisów SQL analizuje dostarczony dokument składnika kopii zapasowej, aby zidentyfikować odpowiednie bazy danych i usunąć wszelkie dodatkowe pliki utworzone od czasu wykonania kopii zapasowej. Sprawdza również miejsca na dysku i zamyka wszystkie otwarte dojścia do plików bazy danych, aby żądający mógł skopiować potrzebne dane w fazie przywracania. Ta faza umożliwia wykrycie wszelkich wczesnych warunków błędu, zanim żądający wykona rzeczywiste kopiowanie plików. Program SQL Server umieszcza również bazę danych w stanie przywracania. Od tego momentu nie można uruchomić bazy danych do momentu pomyślnego przywrócenia.
Przywracanie plików
Jest to wyłącznie akcja specyficzna dla osoby żądającej. Obowiązkiem osoby żądającej (aplikacji kopii zapasowej) jest skopiowanie wymaganych plików bazy danych (lub skopiowanie odpowiednich zakresów danych na potrzeby przywracania różnicowego) do odpowiednich miejsc. Moduł zapisywania SQL nie jest zaangażowany w tę operację.
Czyszczenie i kończenie
Po przywróceniu wszystkich danych do odpowiednich miejsc, wywołanie od osoby żądającej z powiadomieniem o zakończeniu operacji przywracania IvssBackupComponents::PostRestore pozwala pisarzowi SQL na rozpoczęcie działań po przywróceniu. Składnik zapisywania SQL w tym momencie wykonuje fazę ponownego odzyskiwania awaryjnego. Jeśli odzyskiwanie nie jest żądane (tj. SetAdditionalRestores(true) nie jest określone przez obiekt żądający), faza cofania kroku odzyskiwania jest również przeprowadzana w tej fazie.
Szczegóły opcji tworzenia i przywracania kopii zapasowej
W tej sekcji opisano szczegółowo wszystkie opcje tworzenia i przywracania kopii zapasowych obsługiwane przez moduł SQL.
Obiekt żądającego tworzy kopię woluminu w tle
Składnik zapisywania SQL może być zaangażowany w proces tworzenia kopii woluminów w tle (poza kontekstem tworzenia kopii zapasowej i przywracania), ponieważ woluminy zapasowe plików bazy danych zostały dodane do zestawu migawek woluminów. W takim przypadku moduł zapisywania SQL uczestniczy tylko w wyliczaniu metadanych, Freeze, Thaw, PrepareForSnapshoti PostSnapshot koordynacji (zobacz diagram przepływu danych, aby uzyskać szczegółowe informacje).
Pełna kopia zapasowa i przywracanie
Moduł zapisywania SQL obsługuje operacje pełnej kopii zapasowej i przywracania zarówno w trybie bezskładnikowym, jak i składnikowym.
Nieskładnikowe tworzenie i przywracanie kopii zapasowej
W przypadku kopii zapasowej i przywracania nieopartych na komponentach, żądający określa wolumin lub drzewo folderów, których kopia zapasowa ma zostać utworzona i przywrócona. Wszystkie dane w określonym woluminie i folderze są kopiowane zapasowo i przywracane.
Backup
W kopii zapasowej niezależnej od składników mechanizm SQL niejawnie wybiera bazy danych, używając listy woluminów w zestawie migawek. Autor sprawdza, czy bazy danych są rozdarte, zgłaszając błąd, jeśli zostaną znalezione. Rozdarta baza danych jest bazą danych, w której jest wybierany podzbiór plików na liście woluminów. Wycofywanie (przywracanie różnicowe lub przywracanie dziennika) po przywróceniu nie jest obsługiwane za pośrednictwem składnika zapisywania SQL.
Przywróć
Moduł żądający przywraca bazy danych, których kopia zapasowa została utworzona w trybie nieskładnikowym. Takich przywracania nie można wykonać przez przywracanie zbiorcze, takie jak przywracanie dziennika lub przywracanie różnicowe.
W przypadku operacji przywracania nieopartych na składnikach, przywracanie musi być wykonywane przy wystąpieniu SQL Server w trybie offline lub docelowe bazy danych muszą być usunięte/odłączone, aby upewnić się, że pliki są w trybie offline. Pliki są kopiowane na docelowe miejsce, a następnie bazy danych są dołączane. Wszystko to dzieje się poza zakresem składnika zapisywania SQL.
Tworzenie i przywracanie kopii zapasowej opartej na składnikach
W kopii zapasowej opartej na komponentach obiekt żądający jawnie wybiera komponenty bazy danych (z metadanych zwracanych przez składnik zapisywania SQL do klienta) do utworzenia lub przywrócenia kopii zapasowej.
Backup
W kopii zapasowej opartej na składnikach wszystkie woluminy zapasowe dla wybranych baz danych powinny być uwzględnione w zestawie migawek woluminów. W przeciwnym razie składnik zapisywania SQL wykrywa uszkodzone bazy danych (z woluminami zapasowymi poza zestawem migawek) i nie udaje się utworzyć kopii zapasowej. Pełna kopia zapasowa wykonuje kopię zapasową danych bazy danych i wszystkich plików dziennika niezbędnych do przeniesienia bazy danych do stanu spójnej transakcyjnie w czasie przywracania.
Pełne przywracanie bez wycofywania
Pełne przywracanie kopii zapasowej bazy danych jest często realizowane bez konieczności wykonywania dodatkowego przejścia do przodu. To może być spowodowane brakiem metadanych ułatwiających przywracanie do przodu lub, w niektórych przypadkach, takie przywracanie nie jest potrzebne. W tej sekcji krótko omówiono te dwie sytuacje.
Brak metadanych/brak przesuwania do przodu
Jeśli podczas operacji tworzenia kopii zapasowej nie są zapisywane żadne metadane składnika zapisywania (metadane kopii zapasowej oparte na składnikach), przywracanie musi zostać wykonane z wystąpieniem programu SQL Server w trybie offline lub docelowe bazy danych zostaną porzucone/odłączone, aby upewnić się, że pliki są w trybie offline. Pliki są kopiowane na docelowe miejsce, a następnie bazy danych są dołączane. Wszystko to dzieje się poza zakresem składnika zapisywania SQL.
Metadane istnieją, ale nie jest potrzebna żadna dodatkowa aktualizacja do przodu
Żądający przywraca bazy danych, których kopie zapasowe zostały utworzone w trybie opartym na składnikach, ale nie jest wymagane żadne zastosowanie zmian. W takim przypadku program SQL Server wykonuje odzyskiwanie awaryjne w bazie danych w ramach przywracania.
Pełne przywracanie z dodatkowym przesunięciem naprzód
Żądający może wydać przywracanie, określając opcję SetAdditionalRestores(true). Ta opcja wskazuje, że żądający będzie kontynuować wykonywanie kolejnych operacji przywracania zbiorczych (takich jak przywracanie dziennika, przywracanie różnicowe itp.). Spowoduje to, że program SQL Server nie wykona kroku odzyskiwania na końcu operacji przywracania.
Jest to możliwe tylko wtedy, gdy metadane modułu zapisywania zostały zapisane podczas tworzenia kopii zapasowej i są dostępne dla składnika zapisywania SQL w czasie przywracania. Usługa SQL Server musi być uruchomiona, zanim żądający kieruje usługę VSS do wykonania działania przywracania.
Silnik zapisujący SQL oczekuje następującej sekwencji:
Przygotowanie do przywrócenia każdej bazy danych. To działanie polega na zamknięciu wszystkich uchwytów plików, aby umożliwić aplikacji żądającej skopiowanie lub zamontowanie plików bazy danych.
Pliki są kopiowane/instalowane przez aplikację żądającego.
Finalizuj przywracanie (z
NORECOVERY). Bazy danych są udostępniane online, ale w stanie przywracania.
Konwencjonalne kopie zapasowe programu SQL Server, różnicowe lub dzienniki mogą następnie być używane do przesuwania bazy danych do przodu za pomocą interfejsu VDI, języka Transact-SQL, lub poprzez zastosowanie przywracania różnicowego z użyciem platformy VSS.
Obsługa pełnego tekstu
Moduł zapisywania SQL zgłasza kontenery katalogów pełnotekstowych z rekurencyjnymi specyfikacjami plików w ramach składników bazy danych w dokumencie metadanych modułu zapisywania. Są one automatycznie dołączane do kopii zapasowej po wybraniu składnika bazy danych.
Różnicowa kopia zapasowa i przywracanie
Różnicowa operacja tworzenia kopii zapasowej wykonuje kopię zapasową tylko danych, które uległy zmianie od najnowszej podstawowej pełnej kopii zapasowej. Różnicowa kopia zapasowa zawiera tylko te części zmienionych plików bazy danych. Aby utworzyć taką kopię zapasową, żądający (aplikacja kopii zapasowej) potrzebuje informacji o lokalizacji zmian w plikach bazy danych, aby można było utworzyć kopię zapasową odpowiednich sekcji plików. Podczas operacji różnicowej kopii zapasowej pisarz SQL udostępnia te informacje w formacie określonym przez informacje częściowe o pliku VSS. Te informacje mogą służyć do tworzenia kopii zapasowej tylko zmienionej części plików bazy danych.
Backup
Żądający może wykonać różnicową kopię zapasową, ustawiając opcję DIFFERENTIALVSS_BT_DIFFERENTIAL w dokumencie składnika kopii zapasowej IVssBackupComponents::SetBackupState, podczas inicjowania operacji tworzenia kopii zapasowej przy użyciu VSS. Składnik zapisywania SQL przekazuje częściowe informacje o pliku (zwrócone przez program SQL Server) do usługi VSS. Żądający może uzyskać te informacje o pliku, wywołując API IVssComponent::GetPartialFile usługi VSS. Te częściowe informacje o pliku umożliwiają żądającego wybranie tylko zmienionych zakresów bajtów w celu utworzenia kopii zapasowej plików bazy danych.
W fazie zadań poprzedzających tworzenie kopii zapasowej moduł zapisywania SQL zapewnia, że istnieje jedna baza różnicowa dla każdej wybranej bazy danych.
Podczas PostSnapshot zdarzenia pisarz SQL uzyskuje częściowe informacje o pliku z programu SQL Server i dodaje je do dokumentu składnika kopii zapasowej, wywołując IVssComponent::AddPartialFile.
Uwaga
SQL Writer obsługuje tylko jeden różnicowy punkt odniesienia dla różnicowych kopii zapasowych. Wielopunktowe punkty odniesienia nie są obsługiwane.
Format częściowych informacji o pliku
Dla każdej bazy danych, której kopia zapasowa jest tworzona podczas różnicowej kopii zapasowej, moduł SQL przechowuje częściowe informacje o każdym pliku bazy danych. Te informacje są używane przez wnioskodawcę lub aplikację kopii zapasowej do kopiowania tylko istotnych fragmentów pliku na nośnik kopii zapasowej podczas tworzenia rzeczywistej kopii zapasowej plików.
Aby uzyskać więcej informacji na temat formatu tego częściowego pliku, zobacz Usługa kopiowania woluminów w tle (VSS).
Żądający może określić te pliki, wywołując polecenie IVssComponent::GetPartialFileCount i IVssComponent::GetPartialFile.
IVssComponent::GetPartialFile Zwraca ścieżkę i nazwę pliku wskazującą plik oraz ciąg zakresów, który określa, które części pliku wymagają utworzenia kopii zapasowej.
Aby uzyskać więcej informacji na temat pobierania częściowych informacji o pliku, zobacz dokumentację usługi VSS.
Tworzenie kopii zapasowych plików
W tej fazie aplikacja kopii zapasowej powinna przeanalizować metadane pisarza przechowywane w dokumencie składnika kopii zapasowej i utworzyć kopię zapasową tylko odpowiednich części plików. (W przypadku plików wykazu pełnotekstowego należy wykonać tę kopię zapasową na podstawie sygnatur czasowych pliku. Opisano to w dalszej części tego artykułu).
Różnicowa kopia zapasowa zawsze odnosi się do najnowszej podstawowej kopii zapasowej, która istnieje dla bazy danych. W czasie przywracania program SQL Server wykrywa niezgodność podstawowych i różnicowych kopii zapasowych. Dlatego jest to odpowiedzialność aplikacji kopii zapasowej lub administratora systemu, aby upewnić się, że różnicowa jest względem oczekiwanej pełnej kopii zapasowej. Jeśli procedura niezwiązana z bieżącym pasmem wykonała kolejną pełną kopię zapasową, aplikacja kopii zapasowej może nie być w stanie przywrócić kopii różnicowej, ponieważ nie ma dostępu do bazowej kopii zapasowej.
Obecnie, jeśli informacje o zakresie bajtów (częściowe informacje o pliku) są zbyt duże (przekraczające 64 KB w rozmiarze buforu), program SQL Server zgłasza błąd, który nakazuje użytkownikowi wykonanie pełnej kopii zapasowej.
Rozwiązywanie problemów
Dodawanie/upuszczanie/zmniejszanie/powiększanie/zmiana nazwy logicznej/zmiana nazwy fizycznej sprawiają, że interesujące przypadki rozwiązywania problemów z kopią zapasową.
Pliki nowo dodane po pobraniu bazy
Te pliki są uwzględniane w specyfikacji częściowej, ponieważ każdy nagłówek pliku bazy danych musi znajdować się w częściowej specyfikacji. Oprócz strony nagłówka wszystkie przydzielone strony muszą być uwzględnione w częściowej specyfikacji.
Pliki porzucone po przejęciu bazy
Po przejęciu bazy pliki danych mogą zostać usunięte. Takie pliki nie są uwzględniane w dokumencie metadanych modułu zapisywania podczas tworzenia różnicowej kopii zapasowej. Ponadto żadne częściowe informacje nie są skojarzone z porzuconym plikiem.
Pliki skurczyły się po pobraniu bazy
Częściowe informacje nie są zbierane z plików, dopóki na serwerze nie zostanie wyłączone zmniejszanie plików. Dzięki temu usługa VSS nigdy nie zawiera żadnych częściowych informacji odpowiadających regionowi skurczenia pliku danych.
Pliki powiększone po utworzeniu bazy
Jeśli wzrost nastąpił przed zebraniem częściowych informacji, to częściowe informacje powinny zawierać przydzielone strony w rozwiniętym regionie. Jeśli wzrost miał miejsce po zebraniu częściowych informacji, częściowe informacje nie obejmują zmian w uprawianym regionie. W poniższych sekcjach widać, że takie zmiany są przywracane przez przetaczanie dziennika do przodu.
Logicznie zmieniono nazwę pliku po pobraniu bazy
Logiczna zmiana nazwy pliku nie ma wpływu na tworzenie kopii zapasowej ani przywracanie, ponieważ nazwa logiczna pliku nie jest przywołyna w żadnym miejscu w dokumencie metadanych modułu zapisywania ani w dokumencie składnika kopii zapasowej.
Aby uzyskać więcej informacji, zobacz dokument dotyczący metadanych Writera: przykład w dalszej części tego artykułu.
Nazwa pliku fizycznie zmieniona po pobraniu bazy
Zmiana nazwy fizycznego pliku bazy danych nie będzie obowiązywać do momentu ponownego uruchomienia bazy danych. W związku z tym informacje o konfiguracji bazy danych lub informacje o ścieżce pliku w buforze informacji częściowych są nadal oparte na starych ścieżkach fizycznych, które są jedynymi prawidłowymi ścieżkami do tych plików bazy danych w migawce.
Przywróć
Podczas przywracania różnicowego metadane kopii zapasowej, które żądający przekazuje do usługi SQL Writer, zawierają informacje o typie kopii zapasowej. W związku z tym nie jest potrzebne żadne specjalne traktowanie piszącego SQL. Program SQL Server samodzielnie ustala, że jest to przywracanie różnicowe. Program SQL Server obsługuje takie przywracanie różnicowe w taki sam sposób, jak w przypadku natywnego przywracania różnicowego, które nie jest wykonywane za pośrednictwem usługi VSS.
Faza przed przywracaniem
W tej fazie program SQL Server zmienia rozmiar wszystkich plików na odpowiedni rozmiar na podstawie metadanych pliku różnicowej kopii zapasowej. W przypadku wzrostu pliku program SQL Server wyzeruje rozrosną część. Jeśli należy utworzyć nowy plik (został utworzony po pobraniu bazy), program SQL Server wyzeruje nowy plik. Zamyka również wszystkie dojścia do plików, aby aplikacja kopii zapasowej mogła zastąpić pliki przywróconymi danymi z nośnika kopii zapasowej.
Przywracanie plików
Klient powinien przywrócić pliki na podstawie częściowej specyfikacji plików. Dane powinny zostać przywrócone do tego samego przesunięcia/zakresu pliku bazy danych, co określono w częściowej specyfikacji pliku przechowywanej w metadanych modułu zapisywania.
Dodawanie/usuwanie/rozrost/zmniejszanie/zmiana nazwy logicznej/zmiana nazwy fizycznej pliku bazy danych stanowi interesujące przypadki do rozwiązywania problemów podczas przywracania.
Jeśli plik bazy danych został dodany po utworzeniu pełnej bazy
Takie pliki muszą zostać wstępnie utworzone przez program SQL Server w fazie przygotowywania przywracania. Powinny zostać rozszerzone do odpowiedniego rozmiaru i wyzerowane. Klient musi tylko umieścić dane zgodnie ze specyfikacją częściową (specyfikacja częściowa obejmuje wszystkie przydzielone zakresy).
Jeśli plik bazy danych został usunięty po utworzeniu pełnej bazy
Częściowe informacje podane przez program SQL Server nie zawierają żadnych informacji śledzenia dla takich zrzutów plików. Program SQL Server jest odpowiedzialny za wykrywanie plików do usunięcia, porównując przywrócone metadane plików z istniejącymi kontenerami i usuwając je. Jest to wykonywane przed przywróceniem jako krok przygotowania.
Jeśli plik bazy danych zwiększył się od czasu wykonania pełnej kopii zapasowej
Takie pliki muszą zostać rozszerzone do odpowiedniego rozmiaru przez program SQL Server w fazie przygotowywania przywracania. Region rozszerzony musi być również wyzerowany przez program SQL Server. W związku z tym klient może bezpiecznie określić dane nawet w regionie rosnącym zgodnie ze specyfikacją częściową. Jeśli plik rozrósł się po pobraniu częściowych informacji, zmiany w rozrośniętym obszarze zostaną przywrócone przez odtworzenie dziennika, którego kopia zapasowa została wykonana wraz z różnicową kopią zapasową.
Jeśli plik bazy danych zmniejszył się od czasu wykonania pełnej kopii zapasowej
Program SQL Server jest odpowiedzialny za obcięcie pliku do wymaganego rozmiaru zgodnie z metadanymi. Jest to wykonywane przed przywróceniem jako krok przygotowania.
Jeśli plik bazy danych został logicznie przemianowany od czasu wykonania pełnej kopii zapasowej
Nie ma to wpływu na przywracanie, ponieważ nazwa logiczna nie pojawia się w dokumencie metadanych zapisującego elementu ani w dokumencie składnika kopii zapasowej. Zmiana nazwy logicznej jest przywracana, gdy klient stosuje zmianę do podstawowego pliku bazy danych, który zawiera informacje o wykazie systemu.
Jeśli plik bazy danych został fizycznie przemianowany od czasu wykonania pełnej kopii zapasowej
Jeśli do czasu wykonania różnicowej kopii zapasowej zmiana nazwy nie została przeprowadzona, klient nadal przywraca dane do starej lokalizacji. Ponowne uruchomienie bazy danych po przywróceniu powoduje, że zmiana nazwy fizycznej wejdzie w życie. Jeśli w czasie różnicowej kopii zapasowej nazwa pliku fizycznego została już zmieniona, częściowe dane, jeśli istnieją, są tworzone z nowej ścieżki fizycznej.
Po przywróceniu
Podczas zdarzeń po przywróceniu pisarz SQL wykonuje normalną operację ponownego odtworzenia i odzyskiwanie (jeśli SetAdditionalRestores() jest ustawione na False) bazy danych.
Różnicowa kopia zapasowa i przywracanie dla wykazów pełnotekstowych
Wykazy pełnotekstowe programu SQL Server są częścią zasobów bazy danych, których kopia zapasowa musi zostać utworzona lub przywrócona razem z pozostałymi plikami bazy danych. Różnicowa kopia zapasowa bazuje na znacznikach czasu dla katalogu pełnotekstowego. Różnicowa kopia zapasowa i przywracanie usługi VSS programu SQL Server ma jedną podstawową kopię zapasową. Innymi słowy, nie ma różnych baz dla różnych kontenerów. W przypadku kopii zapasowej wykazu pełnotekstowego usługi VSS oznacza to, że dla wszystkich kontenerów wykazu pełnotekstowego kopia zapasowa różnicowa opiera się na jednym znaczniku czasu, w przeciwieństwie do przypadku natywnej różnicowej kopii zapasowej programu SQL Server, gdzie każdy kontener wykazu pełnotekstowego ma własny znacznik czasu.
W usłudze VSS ten znacznik czasu jest wyrażany jako właściwość obejmująca cały składnik, która jest ustawiana podczas pełnej kopii zapasowej i używana podczas kolejnej różnicowej kopii zapasowej.
OnIdentify
W OnIdentify składnik SQL wywołuje IVssCreateWriterMetadata::SetBackupSchema() w celu ustawienia wartości VSS_BS_TIMESTAMPED. Informuje to aplikację do tworzenia kopii zapasowych, że zarządzanie bazą różnicową należy do modułu zapisywania SQL.
Ustawianie podstawowego znacznika czasu
Podstawowy znacznik czasu jest ustawiany podczas pełnej kopii zapasowej. W OnPostSnapshot(), pisarz wywołuje IVssComponent::SetBackupStamp() w celu zapisania znacznika czasu wraz z komponentem w dokumencie kopii zapasowej.
Różnicowa kopia zapasowa
Aplikacja kopii zapasowej pobiera ten znacznik czasu z podstawowej pełnej kopii zapasowej i udostępnia znacznik czasu dla modułu zapisywania, wywołując metodę IVssComponent::GetBackupStamp() w celu pobrania znacznika bazowego z poprzedniej podstawowej kopii zapasowej. Następnie udostępnia go pisarzowi, wywołując metodę IVssBackupComponent::SetPreviousBackupStamp(). Następnie składnik zapisywania pobiera sygnaturę przez wywołanie IVssComponent::GetPreviousBackupStamp() metody i tłumaczy ją na sygnaturę czasową używaną dla elementu IVssComponent::AddDifferencedFilesByLastModifyTime().
Odpowiedzialność aplikacji za tworzenie kopii zapasowych podczas tworzenia różnicowej kopii zapasowej
Podczas różnicowej kopii zapasowej aplikacja kopii zapasowej jest odpowiedzialna za:
Tworzenie kopii zapasowej dowolnego pliku (całego pliku), którego sygnatura czasowa ostatniej modyfikacji jest większa niż sygnatura czasowa określona przez czas ostatniej modyfikacji dla pliku ustawionego w składniku.
Śledzenie i wykrywanie usuniętych plików.
Obowiązki aplikacji kopii zapasowej podczas przywracania różnicowego
Podczas przywracania różnicowego aplikacja kopii zapasowej jest odpowiedzialna za:
Przywrócenie wszystkich plików, których kopia zapasowa została utworzona, przez utworzenie nowego pliku, jeśli jeszcze nie istnieje, lub zastąpienie istniejącego pliku, jeśli już istnieje.
Powiększanie pliku przed określeniem zawartości, jeśli przywrócony plik jest większy niż istniejący plik.
Obcięcie pliku do tego samego rozmiaru co przywrócony plik, jeśli przywrócony plik jest mniejszy niż istniejący plik.
Usuwanie wszystkich plików, które mają zostać usunięte; oznacza to, że pliki, które nie powinny istnieć od punktu w czasie różnicowej kopii zapasowej.
Kopia zapasowa tylko do kopiowania
Czasami konieczne jest utworzenie kopii zapasowej przeznaczonej do specjalnego celu. Na przykład może być konieczne utworzenie kopii bazy danych do celów testowych. Ta kopia zapasowa nie powinna mieć wpływu na ogólne procedury tworzenia kopii zapasowych i przywracania bazy danych.
COPY_ONLY Użycie opcji określa, że kopia zapasowa jest wykonywana poza pasmem i nie powinna mieć wpływu na normalną sekwencję kopii zapasowych. Pisarz SQL obsługuje kopię zapasową typu tylko do odczytu w wystąpieniach programu SQL Server.
W fazie odnajdywania kopii zapasowych składnik zapisywania SQL wskazuje jego możliwość tworzenia kopii zapasowej tylko do kopiowania, ustawiając opcję VSS_BS_COPY obsługiwanego schematu kopii zapasowej przy użyciu wywołania IVssCreateWriterMetadata::SetBackupSchema . Wnioskodawca może ustawić typ kopii zapasowej na kopiowanie tylko, ustawiając opcję VSS_BACKUP_TYPE tak jak VSS_BT_COPY, podczas wywołania IVssBackupComponents::SetBackupState.
Po wybraniu kopii zapasowej tylko do kopiowania zakłada się, że pliki na dysku są kopiowane do nośnika kopii zapasowej (przez osoby żądające) niezależnie od stanu historii kopii zapasowych każdego pliku. Program SQL Server nie aktualizuje historii kopii zapasowych. Ten typ kopii zapasowej nie stanowi podstawowej kopii zapasowej dla dalszych operacji różnicowych kopii zapasowych, a także nie zakłóca historii poprzednich różnicowych kopii zapasowych.
Przywracanie z przenoszeniem
Usługa VSS umożliwia wnioskującemu (aplikacja kopii zapasowej) określenie nowego obiektu docelowego przywracania przy użyciu wywołania IVssComponent::SetNewTarget. Zarówno w PreRestore(), jak i PostRestore(), mechanizm zapisujący SQL sprawdza, czy określono co najmniej jeden nowy element docelowy. Aplikacja kopii zapasowej jest odpowiedzialna za fizyczne kopiowanie plików do nowej lokalizacji w czasie rzeczywistego przywracania/kopiowania plików.
Aplikacja do tworzenia kopii zapasowych może określać tylko nowe elementy docelowe dla ścieżki fizycznej, ale nie specyfikację pliku. Na przykład dla pliku bazy danych znajdującego się w c:\data\test.mdflokalizacji nie można zmienić rzeczywistej nazwy test.mdf pliku. Można zmienić tylko ścieżkę c:\data . W przypadku kontenera wykazu pełnotekstowego znajdującego się w lokalizacji c:\ftdata\foo, ponieważ specyfikacja pliku w VSS to "*", a specyfikacja ścieżki to c:\ftdata\foo, całą ścieżkę można zmienić.
Zmiana nazwy bazy danych
Może być konieczne przywrócenie bazy danych programu SQL Server o nowej nazwie, zwłaszcza jeśli baza danych ma zostać przywrócona obok oryginalnej bazy danych. Tę opcję można określić przez osoby żądającej podczas operacji przywracania, ustawiając niestandardową opcję przywracania jako "Nowa nazwa składnika" = <"Nowa nazwa składnika"> przy użyciu wywołania IVssBackupComponents::SetRestoreOptions() usługi VSS (w parametrze wszRestoreOptions ).
Dostawca SQL pobiera całą zawartość wartości Nowa nazwa komponentu i używa jej jako nowej nazwy przywróconej bazy danych. Jeśli nie określono żadnej opcji, program SQL Server przywraca bazę danych z oryginalną nazwą (nazwą składnika).
Uwaga
Moduł zapisywania SQL obecnie nie obsługuje funkcji renamowania między wystąpieniami w celu przenoszenia bazy danych do nowego wystąpienia.
Migawki odzyskane automatycznie
Zazwyczaj migawka bazy danych programu SQL Server uzyskanej przy użyciu platformy VSS jest w stanie nieodzyskanym. Dane w migawce nie mogą być bezpiecznie dostępne przed przejściem przez fazę odzyskiwania w celu wycofania transakcji w locie i umieszczenia bazy danych w spójnym stanie. Ponieważ migawka jest w stanie tylko do odczytu, nie można jej odzyskać przez normalny proces dołączania bazy danych.
Możliwe jest automatyczne odzyskiwanie migawek w ramach procesu ich tworzenia. W ramach dokumentu metadanych składnika, pisarz SQL określa flagę VSS_CF_APP_ROLLBACK_RECOVERY, aby wskazać, że odzyskiwanie musi zostać wykonane na migawce bazy danych, zanim będzie można uzyskać dostęp do bazy danych. Podczas określania zestawu migawek, obiekt żądający może wskazać, że migawka powinna być migawką przywracania aplikacji (to znaczy wszystkie pliki bazy danych w migawce mają być w stanie spójnym gotowym do użycia przez aplikację) lub migawką kopii zapasowej (migawka używana do tworzenia kopii zapasowych danych, które mają zostać przywrócone później, jeśli wystąpi awaria systemu).
Żądający powinien ustawić VSS_VOLSNAP_ATTR_ROLLBACK_RECOVERY, żeby wskazać, że ten składnik jest zabezpieczany w celu innym niż kopia zapasowa. Następnie usługa VSS koreluje, że pisarz SQL określił składnik VSS_CF_APP_ROLLBACK_RECOVERY z elementem VSS_VOLSNAP_ATTR_ROLLBACK_RECOVERY, i stwierdza, że odbywa się automatyczne odzyskiwanie. Usługa VSS sprawia, że migawka jest zapisywalna przez ograniczony czas i automatycznie dodaje VSS_VOLSNAP_ATTR_AUTORECOVERY bit do kontekstu migawki.
W programie SQL Server funkcja autorecovery należy stosować tylko do migawek wycofywania aplikacji, ale nie do migawek kopii zapasowych. W przypadku migawek wycofywania aplikacji proces autorecovery jest inicjowany przez składnik zapisywania SQL podczas procesu PostSnapShotevent. Ten proces wykonuje następujące czynności dla każdej jawnie wybranej (przez osobę żądającą) bazy danych SQL Server w zestawie migawek:
Dołącz bazę danych migawek do oryginalnego wystąpienia programu SQL Server (czyli wystąpienia, do którego jest dołączona oryginalna baza danych).
Odzyskaj bazę danych (dzieje się tak w ramach operacji "dołączania").
Zmniejszanie plików dziennika.
Technologia ta zmniejsza ilość niepotrzebnego mechanizmu kopiowania przy zapisie, który musi być wykonywany przez framework VSS, jeśli dostawca usługi VSS jest dostawcą oprogramowania. Zmniejszanie plików dziennika jest zachowaniem domyślnym. Można to wyłączyć, ustawiając wartość następującego klucza rejestru na
1.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLWriter\Settings\DisableLogShrinkMoże to być przydatne w scenariuszach, w których migawka może służyć do eksportowania danych z określonej strony (w określonym punkcie w czasie) z dziennika w celu rozwiązania problemu w bazie danych online.
Odłącz bazę danych.
Teraz istnieje spójna, odzyskana migawka, którą można dołączyć do zapytań.
Transakcje obejmujące wiele baz danych
W starszych wersjach programu SQL Server bazy danych migawek mogą czasami zawierać niektóre transakcje z wieloma bazami danych w locie. Podczas operacji odzyskiwania pisarz SQL dołącza bazę danych do migawek z opcją Domniemane przerwanie. Spowoduje to wycofanie wszystkich transakcji z wieloma bazami danych, które nie zostały jeszcze zatwierdzone (w tym transakcji, które znajdują się w stanie Przygotowany do zatwierdzenia). Może to prowadzić do pewnych niespójności między bazami danych w zbiorze migawek.
Rozważmy na przykład dwie bazy danych A i B. Istnieje transakcja rozproszona między tymi dwiema bazami danych, a ta transakcja jest w stanie Zatwierdzone w bazie danych A i w stanie Przygotowany do zatwierdzenia w bazie danych B. W ramach procesu autoodzyskiwania ta transakcja została zatwierdzona w bazie danych A i wycofana w bazie danych B. Może to prowadzić do pewnych niespójności w zestawie kopii migawkowych.
Nowsze wersje systemu Windows mają ulepszony składnik Microsoft Distributed Transaction Coordinator (MS DTC), który rozwiązuje problem niespójności w transakcjach obejmujących bazy danych rozłożone na wielu wystąpieniach programu SQL Server. Nowsze wersje programu SQL Server naprawiają te niespójności dla transakcji obejmujących bazy danych w ramach wystąpienia programu SQL Server.
Implikacje dotyczące zabezpieczeń dla migawek w trybie autorecovered
W przypadku migawek usługi VSS po automatycznym odzyskiwaniu pliki są zabezpieczone przy użyciu list kontroli dostępu (ACL), aby zezwolić na dostęp tylko do specjalnej wbudowanej grupy, do której należy konto programu SQL Server. Oznacza to, że członkowie grupy box admin lub tej specjalnej grupy mogą dołączyć bazę danych. Klient żądający dołączenia plików bazy danych w migawce musi być członkiem Builtin/Administrators lub konta SQL Server.
Proste bazy danych użytkowników modelu odzyskiwania
master Jeśli baza danych wraz z bazami danych użytkowników, które korzystają z prostego modelu odzyskiwania, zostanie przywrócona, można je przywrócić przy użyciu tej samej techniki, co dla master bazy danych: po wyłączeniu instancji, wystarczy skopiować lub zamontować woluminy. Po uruchomieniu wystąpienia SQL wszystko zostanie odzyskane.
Wycofywanie baz danych użytkowników
Jeśli bazy danych użytkowników mają zostać odzyskane i przetworzone do przodu razem z master odzyskiwaniem bazy danych, instancja nie powinna uruchamiać się i odzyskiwać master oraz baz danych użytkowników jednocześnie.
Procedura jest następująca:
Upewnij się, że instancja SQL Server jest zatrzymana.
Wykonaj przywracanie w dwóch fazach.
Przywróć systemowe bazy danych i bazy danych użytkowników, które powinny zostać odzyskane w tym samym czasie (czyli bazy danych użytkowników w prostym modelu odzyskiwania) za pośrednictwem kopiowania plików lub instalacji woluminów za pośrednictwem usługi VSS.
Jeśli bazy danych użytkowników, które mają zostać przywrócone do stanu przyszłego, nie znajdują się na tym samym woluminie co systemowe bazy danych, nie należy przywracać tego woluminu w tym momencie. Ten scenariusz wymaga planowania przed utworzeniem kopii zapasowej.
Jeśli bazy danych użytkowników znajdują się na tym samym woluminie co systemowe bazy danych, bazy danych użytkowników muszą być ukryte przed programem SQL Server.
Uruchom wystąpienie programu SQL Server przy użyciu parametru
-f. (W przypadku korzystania z opcji uruchamiania-fmożna przywrócić tylkomasterbazę danych).Wydaj polecenie
ALTER DATABASE <database> SET OFFLINE(lub odłącz bazę danych) dla każdej bazy danych, aby została przetoczona naprzód.Zatrzymaj instancję SQL Server.
Uruchom wystąpienie programu SQL Server (pliki baz danych użytkowników do wycofania nie są widoczne dla programu SQL Server).
Użyj usługi VSS, aby przywrócić bazy danych użytkowników WITH NORECOVERY, zgodnie z opisem w Pełne przywracanie z dodatkowym przetaczaniem do przodu.
Dokument metadanych modułu zapisywania: przykład
Baza danych o nazwie DB1, znajdująca się na maszynie Instance1 i należąca do wystąpienia programu SQL Server Server1, zawiera następujące pliki bazy danych/dziennika:
- Plik bazy danych o nazwie "primary" przechowywany w lokalizacji
c:\db\DB1.mdf - Plik bazy danych o nazwie "secondary" przechowywany w lokalizacji
c:\db\DB1.ndf - Plik dziennika bazy danych o nazwie "log" przechowywany w lokalizacji
c:\db\DB1.ldf - Katalog pełnotekstowy o nazwie "foo" przechowywany w katalogu
c:\db\ftdata\foo - Wykaz pełnotekstowy o nazwie "bar" przechowywany w katalogu
c:\db\ftdata\bar
Poniżej przedstawiono metadane autora bazy danych.
Składnik grupy plików na poziomie bazy danych
Podstawowy plik bazy danych:
ComponentType: VSS_CT_FILEGROUP
LogicalPath: "Server1\Instance1"
ComponentName: "DB1"
Caption: NULL
pbIcon: NULL
cbIcon: 0
bRestoreMetadata: FALSE
NotifyOnBackupComplete: TRUE
Selectable: TRUE
SelectableForRestore: TRUE
ComponentFlags: VSS_CF_APP_ROLLBACK_RECOVERY
Pomocniczy plik bazy danych:
LogicalPath: "Server1\Instance1"
GroupName: "DB1"
Path: "c:\db"
FileSpec: "DB1.mdf"
Recursive: FALSE
AlternatePath: NULL
BackupTypeMask: VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED
Filegroup file
LogicalPath: "Server1\Instance1"
GroupName: "DB1"
Path: "c:\db"
FileSpec: "DB1.ndf"
Recursive: FALSE
AlternatePath: NULL
BackupTypeMask: VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED
Dziennik plików pełnotekstowych:
LogicalPath: "Server1\Instance1"
GroupName: "DB1"
Path: "c:\db"
FileSpec: "DB1.ldf"
Recursive: FALSE
AlternatePath: NULL
BackupTypeMask: VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED
Plik pełnotekstowy foo:
LogicalPath: "Server1\Instance1"
GroupName: "DB1"
Path: "c:\db\ftdata\foo"
FileSpec: "*"
Recursive: TRUE
AlternatePath: NULL
BackupTypeMask: VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED
Pasek pliku pełnotekstowego:
LogicalPath: "Server1\Instance1"
GroupName: "DB1"
Path: "c:\db\ftdata\bar"
FileSpec: "*"
Recursive: TRUE
AlternatePath: NULL
BackupTypeMask: VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED
Jeśli wystąpienie serwera jest wystąpieniem domyślnym na maszynie, ścieżka logiczna stanie się jedną częścią: Server1.
Przypadki szczególne
W tej sekcji opisano niektóre specjalne przypadki napotkane podczas operacji tworzenia i przywracania kopii zapasowych opartych na składnikach zapisywania SQL.
Automatyczne zamykanie baz danych
W przypadku kopii zapasowych niezwiązanych ze składnikami autoklosowanie baz danych odbywa się podczas sprawdzania pod kątem rozdartych warunków, ale automatycznie zablokowane bazy danych nie są jawnie zamrożone podczas operacji tworzenia kopii zapasowych.
Oczekiwany scenariusz polega na tym, że istnieje wiele baz danych, które są zamknięte, a więc chciałbyś zminimalizować koszty migawki. Automatycznie zamykane bazy danych są zwykle używane w konfiguracjach niższego poziomu, w których zasoby są ograniczone.
Lista plików
Lista plików dla każdej bazy danych jest określana podczas kroku wyliczania przed zdarzeniem Przygotowanie do tworzenia kopii zapasowej. Jeśli lista plików bazy danych zmienia się między wyliczeniem a zamrożeniem, baza danych może ulec niespójności, chyba że aplikacja ponownie sprawdzi listę plików. Chociaż ten scenariusz jest mało prawdopodobny, jest to coś, o czym muszą wiedzieć dostawcy.
Zatrzymane wystąpienia
Jeśli wystąpienie programu SQL Server nie jest uruchomione w momencie wystąpienia kroku wyliczenia, nie można wybrać żadnej z baz danych dla tych wystąpień.
Jeśli wystąpienie zostanie zatrzymane w interwale między wyliczeniem a zdarzeniem Przygotowanie do utworzenia kopii zapasowej, wszystkie bazy danych w zatrzymanym wystąpieniu zostaną zignorowane.
Bazy danych systemu i użytkowników
Systemowe bazy danych w programie SQL Server obejmują bazy danych master, model i msdb, które są dostarczane i instalowane jako część programu SQL Server. W tej sekcji opisano sposób obsługi tych baz danych w procesie tworzenia kopii zapasowej migawek usługi VSS.
Bazę master danych można przywrócić tylko przez zatrzymanie wystąpienia, zastąpienie plików bazy danych (wykonanych przez aplikację kopii zapasowej), a następnie ponowne uruchomienie wystąpienia. Nie jest możliwe żadne przesunięcie do przodu.
Usługa zapisu SQL obsługuje przywracanie zarówno baz danych model, jak i msdb w trybie online, bez zamykania wystąpienia.
Powiązana treść
- Rejestrowanie SQL Server VSS Writer
- Kopia zapasowa (Transact-SQL)
- Instrukcje RESTORE (Transact-SQL)
- tworzenie kopii zapasowych i przywracanie baz danych programu SQL Server
- Kopie zapasowe tylko do kopiowania
- Kopie zapasowe dziennika transakcji (SQL Server)
- stosowanie kopii zapasowych dziennika transakcji (SQL Server)
- Przewodnik po architekturze i zarządzaniu dziennikiem transakcji programu SQL Server