Mam SQL 2012 z dodatkiem SP1 zainstalowany na moim komputerze. Zrobiłem kopię zapasową bazy danych test.bak
.
Mam bazę danych o nazwie, test2
która jest tą samą bazą danych, ale dane uległy zmianie.
Chcę przywrócić test.bak
przez test2
bazę danych.
Zawsze pojawia się błąd:
Błąd 3154: zestaw kopii zapasowych zawiera kopię zapasową bazy danych innej niż istniejąca baza danych.
Próbowałem:
Prawidłowo kliknąłem
test2 -> Restore database -> From device
Wybrałem
test.bak
i sprawdziłemWith Replace
ale pojawia się błąd.Następnie spróbowałem kliknąć prawym przyciskiem myszy
test2 -> Restore file and filegroups
Wybrałem
test.bak
i sprawdziłem,With Replace
ale pojawia się błąd.
Mogę usunąć starą bazę danych, a następnie przywrócić kopię zapasową o właściwej nazwie, ale kiedy korzystałem z SQL 2008, nie miałem problemu z przywróceniem istniejącej bazy danych.
Wygląda na to, że odkąd używam SQL2012, często pojawia się ten błąd!
źródło
1) Użyj
WITH REPLACE
podczas używaniaRESTORE
polecenia.2)
DROP
starsza baza danych, która jest w konflikcie, i przywróć ponownie za pomocąRESTORE
polecenia.Nie ma problemu z wersją SQL Server. Jak zauważył Aaron, jestem w stanie przywrócić bazę danych od 2008 do 2012 r. I te same wersje.
źródło
Przywracasz niewłaściwą bazę danych. Nie myśl o tym jako o „przywracaniu
test2
z kopią zapasową ztest
”, pomyśl „przywróć moją kopię zapasową,test
ale zmień jej nazwę natest2
”. Możesz wybrać zadanie przywracaniatest
i umieścićtest2
w polu „Do bazy danych:”.Jak wspomina Aaron, ucz się scenariusza, a nie polegaj na czarodzieja - lepiej jest wiedzieć, co się dzieje.
źródło
Nadal możesz to zrobić, ale wymaga to dodatkowego kroku.
Otwórz okno dialogowe przywracania i dokonaj zwykłych wyborów zgodnie z nawykami z 2008 roku. Jeśli oryginalną bazą danych jest DB, wybierz urządzenie DB.bak jako Źródło i zmień Nazwę docelową na DBTest. Następnie w obszarze Wybierz stronę (lewy górny róg) zobaczysz Ogólne / Pliki / Opcje - wybierz Pliki. Spójrz w siatkę. Zobaczysz kolumny dla Oryginalnej nazwy pliku i Przywróć jako nazwę pliku. Ręcznie poszerz tę ostatnią i wpisz nową nazwę (jeśli oryginalną nazwą bazy danych jest DB i chcesz utworzyć DBTest, zmień .... \ DB.mdf na ... \ DBTest.mdf itp.)
Spowoduje to zaakceptowanie pliku .bak dla DB jako źródła i DBTest jako miejsca docelowego. Konieczne może być także przejście do strony Opcje i wybranie opcji Zamień. Muszę z innych powodów, więc nie mogę przetestować tego bez tej opcji.
źródło
Prawidłowa odpowiedź, jak wskazano, to użycie
WITH REPLACE
opcji.Chcę tylko zauważyć, że możesz otrzymać błąd w pytaniu, nawet podczas korzystania
WITH REPLACE
, jeśli spróbujesz przywrócić z różnicowej kopii zapasowej (bez pełnej).źródło
Mam nadzieję, że to zadziała.
źródło
Zatrzymaj działający serwer, a następnie przywróć db, to ci pomoże. :)
źródło