Podczas próby dublowania bazy danych za pomocą następującego polecenia
ALTER AVAILABILITY GROUP SQLAlwaysonGroup ADD DATABASE test0916aj8CJ
Pojawia się następujący błąd
Msg 1475, poziom 16, stan 105, wiersz 1
Baza danych „test0916aj8CJ” może zawierać masowo zarejestrowane zmiany, których nie utworzono kopii zapasowej. Wykonaj kopię zapasową dziennika w głównej bazie danych lub podstawowej bazie danych. Następnie przywróć tę kopię zapasową albo w lustrzanej bazie danych, aby włączyć dublowanie bazy danych, albo w każdej dodatkowej bazie danych, aby umożliwić dołączenie do grupy dostępności.
Czy można to zrobić bez tworzenia kopii zapasowej bazy danych? Czy powinienem wykonać kopię zapasową, a następnie odrzucić kopię zapasową. To jest dla nowo utworzonej bazy danych, więc i tak nie potrzebuję w tym momencie kopii zapasowej.
Próbowałem następujące ...
BACKUP
DATABASE [test0916aj8CJ] TO DISK = N’NUL’
WITH COPY_ONLY, NOFORMAT, INIT,
NAME = N’test-Full Database Backup’,
SKIP, NOREWIND, NOUNLOAD
GO
ale powyższa metoda też nie działała.
Dzięki
źródło
Odpowiedzi:
Łatwo jest naprawić błąd, który masz
Poniżej znajduje się błąd, który otrzymasz:
Pozwala zrozumieć, czym jest ten błąd:
Skonfigurowałeś bazę danych w trybie odzyskiwania PEŁNYM i myślisz, że baza danych jest rzeczywiście w trybie odzyskiwania PEŁNYM.
Powyższe nie jest prawdą. Po utworzeniu bazy danych, jeśli nie wykonasz PEŁNEJ kopii zapasowej, nawet jeśli baza danych jest w trybie odzyskiwania PEŁNEGO, jest w trybie odzyskiwania pseudo-PROSTEGO
Możesz to łatwo zweryfikować za pomocą dbcc dbinfo-> dbi_dbbackupLSNposiadającego wartość 0:0:0(0x00000000:00000000:0000)lub używając skryptu Paula Randala
Edycja: Nawet wykonanie pierwszej pełnej kopii zapasowej z
COPY_ONLY
opcją nie ustanawia również łańcucha kopii zapasowychdbcc dbinfo-> dbi_dbbackupLSNnadal ma wartość 0:0:0(0x00000000:00000000:0000). Oznacza to, że baza danych nadal znajduje się w pseudo-prostym trybie odzyskiwania.
Co musisz zrobić, aby rozwiązać powyższy błąd?
Musisz wykonać pełną kopię zapasową + jedną kopię dziennika transakcji na podstawowej, a następnie przywrócić ją na dodatkowej bazie danych,
with norecovery
a następnie dołączyć do bazy danych w grupie AG lub Mirroring.Na marginesie i dla kompletności, dla twojego skryptu
backup to NUL
, przeczytaj ten post na blogu autorstwa Gail Shaw.źródło
Nie rozumiem, dlaczego używasz
TO DISK = N’NUL’
:Jeśli to zrobisz, kopia zapasowa zostanie zapisana w
NUL
(tj. = Nigdzie / nic) i nie będzie można jej użyć, ponieważ jej plik nie istnieje.Chociaż
NUL
może być również używany jako miejsce docelowe kopii zapasowych LOG, nie należy go również używać, szczególnie na serwerach Prod, ponieważ dzienniki zostaną utracone, a łańcuch kopii zapasowych zostanie zerwany. (~ podobny do aSHRINKFILE
)Przed dodaniem bazy danych do grupy należy ją przygotować. Aby przygotować pomocniczą bazę danych, należy wykonać i przywrócić co najmniej 1 kopię zapasową dziennika transakcji. Serwer lustrzany używa go do ustalenia, które transakcje zostały już zsynchronizowane na dodatkowej bazie danych, a które transakcje nie są jeszcze zsynchronizowane z podstawową bazą danych.
Dlatego należy wykonać kopię zapasową dzienników transakcji na podstawowej bazie danych:
COPY_ONLY
Opcja musi być używany. Zapewnia to, że dzienniki nie są obcinane na końcu kopii zapasowej dziennika.Nie można jednak przywrócić samej kopii zapasowej dziennika, tzn. Bez łańcucha kopii zapasowych (patrz także odpowiedź Kin). Oznacza to, że kopia zapasowa dziennika transakcji musi zostać wykonana po wykonaniu kopii zapasowej PEŁNEJ bazy danych (w razie potrzeby opcjonalnej funkcji różnicowej).
Ponieważ
COPY_ONLY
opcja nie przerywa łańcucha kopii zapasowych, nie tworzy również łańcucha kopii zapasowych.COPY_ONLY
Opcja nie może być używany do kopii zapasowej bazy danych.Kopie zapasowe w kolejności:
COPY_ONLY
opcjiCOPY_ONLY
opcjąNastępnie należy przywrócić kopię zapasową bazy danych (+ Różnicowy) na urządzeniu pomocniczym.
Musi zostać przywrócona z
NORECOVERY
opcją, ponieważ chcesz również przywrócić kopię zapasową dziennika po przywróceniu PEŁNEJ kopii zapasowej.Na koniec przywrócisz kopię zapasową dziennika. Nadal musisz skorzystać z tej
NORECOVERY
opcji, ponieważ kopia lustrzana będzie przywracać transakcje po założeniu.NORECOVERY
opcjąNORECOVERY
opcjąNORECOVERY
opcjąNa podstawowym serwerze uruchom:
Na serwerze pomocniczym uruchom:
Następnie możesz przystąpić do dodawania nowej dodatkowej bazy danych do grupy dostępności ...
źródło