Błąd 3154 podczas przywracania kopii zapasowej przy użyciu Z WYMIANA


16

Mam SQL 2012 z dodatkiem SP1 zainstalowany na moim komputerze. Zrobiłem kopię zapasową bazy danych test.bak.

Mam bazę danych o nazwie, test2która jest tą samą bazą danych, ale dane uległy zmianie.

Chcę przywrócić test.bak przez test2bazę 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:

  1. Prawidłowo kliknąłem test2 -> Restore database -> From device

    Wybrałem test.baki sprawdziłemWith Replaceale pojawia się błąd.

  2. Następnie spróbowałem kliknąć prawym przyciskiem myszy test2 -> Restore file and filegroups

    Wybrałem test.baki sprawdziłem, With Replaceale 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!

Odpowiedzi:


12

Powinieneś używać WITH REPLACEi ogólnie unikać rzeczy typu wskaż i kliknij w Management Studio - są nieelastyczne i często zawierają błędy.

To działało dla mnie:

USE [master];
GO

CREATE DATABASE test;
GO

CREATE DATABASE test2;
GO

BACKUP DATABASE test TO DISK = 'c:\temp\test.bak' WITH INIT, COMPRESSION;
GO

RESTORE DATABASE test2
  FROM DISK = 'c:\temp\test.bak'
  WITH REPLACE,
  MOVE 'test' TO 'c:\temp\test2.mdf',
  MOVE 'test_log' TO 'c:\temp\test2.ldf';

Należy także upewnić się, że podczas tworzenia kopii zapasowych baz danych, których używasz WITH INITi / lub nie kierujesz urządzenia na plik, który już zawiera kopię zapasową (ponieważ może to nie być ta sama baza danych, której kopię zapasową tworzysz teraz - zwłaszcza jeśli ponownie używasz nazw takich jak test...)


@AaronBertrand fyi, ta funkcja istnieje. Zwykle używam interfejsu użytkownika i skryptuję go, aby upewnić się, że wszystko jest w porządku. Tak, jest wiele błędów.
usr

2

1) Użyj WITH REPLACEpodczas używania RESTOREpolecenia.

2) DROPstarsza baza danych, która jest w konflikcie, i przywróć ponownie za pomocą RESTOREpolecenia.

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.


2

Przywracasz niewłaściwą bazę danych. Nie myśl o tym jako o „przywracaniu test2z kopią zapasową z test”, pomyśl „przywróć moją kopię zapasową, testale zmień jej nazwę na test2”. Możesz wybrać zadanie przywracania testi umieścić test2w polu „Do bazy danych:”.

Jak wspomina Aaron, ucz się scenariusza, a nie polegaj na czarodzieja - lepiej jest wiedzieć, co się dzieje.


2

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.


2

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


Prawdopodobnie nie miałem wystarczającej liczby punktów do skomentowania w momencie tej odpowiedzi, chciałem tylko zaznaczyć, że możesz otrzymać błąd nawet podczas korzystania z opcji „Z REPLACE”, jeśli spróbujesz przywrócić z różnicowej kopii zapasowej (bez pełnej)
Brimstedt,

0

Mam nadzieję, że to zadziała.

  1. Po ustawieniu ścieżki do przywrócenia pliku.
  2. Kliknij „Opcje” po lewej stronie.
  3. Zaznacz pole wyboru - „Zamknij istniejące połączenia z docelową bazą danych”.
  4. Kliknij OK. wprowadź opis zdjęcia tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.