„Nie wybrano kopii zapasowej do przywrócenia” SQL Server 2012

150

Mam bazę danych SQL Server 2012 z włączonym strumieniem plików. Jednak gdy wykonuję kopię zapasową i próbuję przywrócić ją na innej instancji SQL Server 2012 (na innym komputerze), po prostu otrzymuję następujący komunikat:

Nie wybrano kopii zapasowej do przywrócenia.

Ani jednej linijki więcej wyjaśnień. Co tu jest nie tak?

Każda inna baza danych bez strumienia plików jest w porządku i można ją pomyślnie przywrócić. Czy jest to coś związanego ze strumieniem plików? Czy powinienem zainstalować poprawkę, czy coś takiego.

Saeed Neamati
źródło
1
Jeszcze tego nie rozwiązał. Wygląda na to, że konfiguracja SQL Server ma problemy. Myślę, że powinno być łatwiej niż to.
Saeed Neamati,
1
Czy możesz podać T-SQL, którego używasz do próby przywrócenia?
Ben Thul,
3
Cóż, używam GUI SSMS.
Saeed Neamati
Nawet robiąc to w ten sposób, gdzieś w górnej części okna powinien znajdować się przycisk „skrypt”. Po skonfigurowaniu wszystkiego w sposób, w jaki myślisz, że będzie ustawiony do przywracania, naciśnij to zamiast „ok”, a wyświetli się T-SQL, który zostanie uruchomiony na serwerze w celu przywrócenia.
Ben Thul
1
Wystąpił problem z uprawnieniami również w przypadku wersji SQL 2014 Standard (autonomicznej) na WS 2012 R2 (grupy robocze), ale musiałem dwukrotnie uruchomić ponownie komputer, aby uzyskać uprawnienia. Cóż to jest warte ... Mam nadzieję, że wy też się rozwiążecie.
BaldEagle

Odpowiedzi:

177

Miałem ten problem i okazało się, że próbuję przywrócić niewłaściwą wersję SQL. Jeśli chcesz uzyskać więcej informacji o tym, co się dzieje, spróbuj przywrócić bazę danych za pomocą następującego SQL:

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'

To powinno dać ci komunikat o błędzie, że musisz to debugować.

user489998
źródło
Jaki komunikat o błędzie pojawia się podczas próby odtwarzania przy użyciu powyższego kodu SQL?
user489998
Wygląda na to, że przywrócenie bazy danych za pomocą skryptu T-SQL załatwi sprawę. Myślę, że ponieważ nie utworzyliśmy kopii zapasowej danych strumienia plików, interfejs użytkownika nie może tego obsłużyć.
Saeed Neamati
1
Fajnie, podoba mi się surowe podejście SQL. Otrzymuję komunikat typu `` Zestaw multimediów ma 2 rodziny multimediów, ale tylko 1 jest dostępna. Należy podać wszystkich członków. ”- czy to oznacza, że ​​źródło kopii zapasowej miało inną wersję programu SQL Server niż miejsce docelowe kopii zapasowej? Kiedy próbuję skorzystać z podejścia UI („Restore”), pojawia się komunikat @ topNo backupset selected to be restored.
The Red Pea
OK, wydaje
The Red Pea
Jeśli chcesz, aby zastąpić istniejącą bazę całkowicie użyć WITH REPLACE opcję RESTORE DATABASE <YourDatabase> FROM DISK='<the path to your backup file>\<YourDatabase>.bak' WITH REPLACE
Iasmini Gomes
63

Mój problem zakończył się uprawnienia . Jestem na maszynie deweloperskiej i zostałem skopiowany za pośrednictwem grupy domowej. W jakiś sposób, prawdopodobnie w zależności od tego, gdzie skopiowałem plik, uprawnienia się pomieszały i Management Studio nie mógł odczytać pliku. Ponieważ jest to program deweloperski, nadałem wszystkim uprawnienia do pliku bak i mogłem z powodzeniem przywrócić go przez GUI.

Tyler Forsythe
źródło
To też działało dla mnie. Tyle, że moja nazwa użytkownika może mieć uprawnienia do tego folderu, ale jedynym sposobem, aby to zadziałało, było dodanie grupy „Wszyscy” do uprawnień w folderze. Takie frustrujące, ale dzięki za oszczędność czasu!
hurleystylee
5
Całkowity brak przydatnych komunikatów o błędach w tym przypadku. Mój problem został również rozwiązany przez to.
dodgy_coder
1
Booya! Uwielbiam te ogólne błędy, które nic ci nie mówią. Oczywiście chodziło o uprawnienia. Zdarzyło mi się podczas przywracania z serwerów sql w różnych domenach. Zmieniono uprawnienia do pliku .bak na wszystkich. Po tym działało dobrze.
Proroczy
Wystąpiły te same problemy podczas próby przywrócenia bazy danych z .bakpliku, który został utworzony przez usługę sieciową przesyłania plików, która działa w ramach usług IISApplicationPoolIdentity
apdevelop
26

Podczas biegania:

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'

Dał mi następujący błąd:

Rodzina multimediów na urządzeniu „C: \ NorthwindDB.bak” jest nieprawidłowo utworzona. SQL Server nie może przetworzyć tej rodziny nośników. Funkcja RESTORE HEADERONLY kończy się nieprawidłowo. (Microsoft SQL Server, błąd: 3241) Cytat blokowy

Okazuje się, że nie można przenieść bazy danych z wyższej wersji SQL do niższej, nawet jeśli poziom zgodności jest taki sam w źródłowej i docelowej bazie danych. Aby sprawdzić wersję SQL, uruchom:

Select @@Version

Aby zobaczyć różnicę, po prostu utwórz bazę danych na źródłowym serwerze SQL i spróbuj przywrócić z pliku kopii zapasowej, kiedy to zrobisz z SSMS, po wybraniu pliku kopii zapasowej pokaże się pewne informacje na jego temat, gdy otwórz go z serwera o niższej wersji, który powie „Nie wybrano kopii zapasowej do przywrócenia” wprowadź opis obrazu tutaj

Więc jeśli nadal musisz przenieść swoje dane do niższej wersji SQL, zaznacz to .

Alon Or
źródło
więc jeśli wykonam kopię zapasową db z maszyny z SQL Server 2014 Enterprise - czy można ją przywrócić na SQL Server 2014 Express?
chester89
@ chester89 Myślę, że to zależy od tego, jaką funkcjonalność masz w bazie danych. I rodzaj kopii zapasowej. Wersja ekspresowa nie rozpoznaje kopii zapasowych z kompresją. Ponadto, jeśli wersja korporacyjna używa czegoś unikalnego dla przedsiębiorstw, wersja bezpłatna (ekspresowa) tego nie rozpozna. Ale jeśli masz coś standardowego, teoretycznie należy to rozpoznać.
Juan Acosta
@JuanAcosta tak, złożyłem to razem. W moim przypadku nie jest używana funkcja specyficzna dla przedsiębiorstwa, więc przywróciłem kopię zapasową bez problemów
chester89
@JuanAcosta Czy możesz wskazać mi dokumentację, która mówi, że wydanie ekspresowe nie może przywrócić skompresowanej kopii zapasowej?
chester89
@Chester sprawdź stronę 234 punkt 3. Domyślna opcja jest jedyną dostępną w wersji ekspresowej. books.google.com.au/…
Juan Acosta
15

Uruchom program SQL Server Management Studio jako administrator (kliknij prawym przyciskiem myszy skrót / plik exe, a następnie wybierz opcję „Uruchom jako administrator”), a następnie spróbuj przywrócić.

Keith
źródło
10

Pomyślałem, że nie byłem na tyle głupi, żeby pomieszać wersje - nie zdawałem sobie jednak sprawy, że na moim nowym serwerze instancja SQL Server 2005 została już zainstalowana od urodzenia o nazwie SQLEXPRESS. Podczas próby przywrócenia bazy danych SQLEXPRESSz kopii zapasowej SQL Server 2008 R2 w programie SSMS 2012 do instancji lista zestawów kopii zapasowych była pusta.

W końcu zdałem sobie sprawę, że SQLEXPRESSinstancja na serwerze nie była instancją z 2012 r., Ale z 2005 r. Odłączyłem się i połączyłem z rzeczywistą instancją z 2012 r. (W moim przypadku o nazwie SQLEXPRESS2012) i (oczywiście) zadziałało.

Frederik Struck-Schøning
źródło
2
To wskazało mi właściwy kierunek dla mojego problemu. Otrzymałem ten sam błąd, co w oryginalnym plakacie, ale wynikał on z próby przywrócenia kopii zapasowej z programu SQL Express 2012 do wystąpienia programu SQL Server 2008. Zrozumiałe jest, że nie jest to zalecane, niestety błąd nie był wystarczająco opisowy, aby dotrzeć do głównego problemu.
Najmniej 1
1
Łał! Zainstalowałem zbyt wiele poprawek ze strony, ale ten błąd nie zniknął. Widziałem tę odpowiedź i zalogowałem się do wystąpienia Sql Server 2012 i próbowałem przywrócić, DZIAŁAŁO! Huh, dziękuję :)
Ali Baig
1
Więc mówisz, że nie możesz przywrócić pełnej wersji do wersji ekspresowej?
Zapnologica
7

Mój problem polegał na tym, że mój użytkownik był w grupie Wbudowani Administratorzy i nie miał użytkownika z rolą Sysadmin na serwerze SQL. Właśnie zacząłem Management Studio jako Administrator. W ten sposób udało się przywrócić bazę danych.

Liz
źródło
Użyłem następującego artykułu, aby utworzyć nowego użytkownika sysadmin (patrz sekcja 2 przy użyciu trybu pojedynczego użytkownika): wikihow.com/Reset-SA-Password-in-Sql-Server
Savage
6

FYI: Odkryłem, że podczas przywracania potrzebowałem użyć tych samych danych logowania (użytkownika SQL), aby zalogować się do SSMS. Najpierw próbowałem przywrócić przy użyciu konta uwierzytelniania systemu Windows.

Ben Ripley
źródło
6

W moim przypadku były to uprawnienia i fakt, że użyłem „Przywróć pliki i grupy plików ...” zamiast po prostu „Przywróć bazę danych ...”.

To zrobiło różnicę.

wprowadź opis obrazu tutaj

Brian
źródło
6

Dla mnie to kwestia uprawnień użytkownika. Zalogowałem się jako użytkownik sa i działa poprawnie.

Sharfi
źródło
5

U mnie problem polegał na tym, że plik .BAK znajdował się w zaszyfrowanym folderze na serwerze. Nawet z pełnymi prawami administratora nigdy nie mogłem uzyskać programu SSMS w celu odczytania pliku. Przeniesienie .BAK do niezaszyfrowanego folderu rozwiązało mój problem. Zwróć uwagę, że po przeniesieniu pliku może być konieczna zmiana właściwości samego pliku, aby usunąć szyfrowanie (prawy przycisk myszy, właściwości, zaawansowane, odznacz „szyfruj zawartość, aby zabezpieczyć dane”).

GadgetNC
źródło
3

Miałem ten sam problem z SQL Server 2014 (Management Studio nie widziało folderu, w którym znajdował się plik kopii zapasowej, podczas próby zlokalizowania go do operacji przywracania). Ten wątek zawierał odpowiedź, która rozwiązała mój problem. Zacytować:

Konto usługi SQL Server można znaleźć, wybierając Start-> Panel sterowania-> Narzędzia administracyjne-> Usługi. Kliknij dwukrotnie usługę SQL Server-> zakładka Logowanie. Będziesz używać „Lokalnego konta systemowego” lub „To konto”, aby zdefiniować określone konto. Jeśli używasz lokalnego konta systemowego, nie będziesz w stanie odwoływać się do kopii zapasowych, które nie są lokalnie dostępne na serwerze. Jeśli zamiast tego zdefiniowałeś konto, które ma być używane, jest to konto, które musi mieć dostęp do lokalizacji pliku kopii zapasowej. Twoja możliwość dostępu do kopii zapasowych za pomocą osobistego logowania jest nieistotna; jest to konto programu SQL Server, które jest używane, nawet jeśli inicjujesz tworzenie kopii zapasowej. Twoi pracownicy IT powinni być w stanie określić, jakie prawa są przyznawane każdemu kontu.

Mam nadzieję, że to komuś pomoże.

BCA
źródło
doceniam, że zacytowałeś źródło bezpośrednio tutaj, o wiele łatwiej jest użyć tych informacji bez opuszczania tej strony.
qxotk
3

W moim przypadku (nowa instalacja serwera sql, nowo utworzony użytkownik) mój użytkownik po prostu nie miał niezbędnych uprawnień. Zalogowałem się do Management Studio jako sa , następnie przeszedłem do Security / Logins, kliknij prawym przyciskiem myszy moją nazwę użytkownika, Właściwości, a następnie w sekcji Role serwera, które zaznaczyłem sysadmin.

Marc.2377
źródło
2

U mnie było tak, ponieważ plik kopii zapasowej był nadal otwarty przez inny proces. Oto dziennik zdarzeń:

BackupDiskFile :: OpenMedia: Nie udało się otworzyć urządzenia kopii zapasowej „X: \ Backups \ MyDatabase \ MyDatabase_backup_2014_08_22_132234_8270986.bak”. Błąd systemu operacyjnego 32 (proces nie może uzyskać dostępu do pliku, ponieważ jest używany przez inny proces).

Po prostu zamknięcie i ponowne otwarcie Sql Server Management Studio rozwiązało problem (więc oczywiście był to ssms.exe, który miał uchwyt ...)

JohnZaj
źródło
1

Innym potencjalnym powodem tej usterki wydaje się być Dysk Google. Dysk Google kompresuje pliki bak lub coś w tym stylu, więc jeśli chcesz przenieść kopię zapasową bazy danych za pośrednictwem Dysku Google, wygląda na to, że musisz ją najpierw spakować.

James Gould
źródło
1

Jeśli chcesz całkowicie zastąpić istniejącą bazę danych, skorzystaj z opcji Z REPLACE :

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'
WITH REPLACE
Iasmini Gomes
źródło
1

W moim przypadku był to problem z uprawnieniami.

wprowadź opis obrazu tutaj

Dla użytkownika Windows, którego używałem, nie miał dbcreatorroli.

Więc wykonałem poniższe kroki

  1. Połącz się jako saz serwerem SQL
  2. Rozwiń Securityw Eksploratorze obiektów
  3. Rozszerzać Logins
  4. Kliknij prawym przyciskiem myszy danego użytkownika systemu Windows
  5. Kliknij Właściwości
  6. Wybierz jedną Server Rolesz Select a pageopcji
  7. Sprawdź dbcreatorrolę użytkownika
  8. Kliknij OK

wprowadź opis obrazu tutaj

Devraj Gadhavi
źródło
0

Korzystanie z programu SQL Server 2012 Express.

Mój błąd (z okna Menedżera SQL - Przywróć bazę danych):

No backupset selected to be restored

Ponadto na liście nie było żadnych kopii zapasowych do wyboru.

Problem polegał na tym, że przeniosłem 1 z 5 plików kopii zapasowej do folderu, w którym użytkownik logowania do usługi SQL Server nie miał uprawnień - próbowałem dodać tego użytkownika, ale nie mogłem wprowadzić użytkownika NT Service \ MSSQL $ SQLEXPRESS do zabezpieczeń lista.

Przeniosłem plik do folderu Dokumenty dla użytkownika usługi, co umożliwiło odczytanie wszystkich plików, które wybrałem - w tym momencie 4 - a błąd zmienił się na „brak zestawu nośników” - po czym rozejrzałem się za innym plikiem kopii zapasowej i kiedy dodałem, że udało mi się przywrócić.

Odpowiedzi na to pytanie pomogły mi spojrzeć w odpowiednie miejsca i znaleźć rozwiązanie.

condiosluzverde
źródło
0

Dla mnie była to kwestia pozwolenia. Zainstalowałem serwer SQL przy użyciu lokalnego konta użytkownika i przed dołączeniem do domeny mojej firmy. Później próbowałem przywrócić bazę danych przy użyciu konta domeny, które nie ma uprawnień potrzebnych do przywrócenia baz danych serwera SQL. Musisz naprawić uprawnienia dla swojego konta domeny i nadać mu uprawnienia administratora systemu w posiadanej instancji serwera SQL.

Anas Ghanem
źródło
0

Otrzymałem ten sam komunikat o błędzie, mimo że wykonuję kopię zapasową i przywracam na tym samym pojedynczym komputerze.

Problem pojawił się tutaj: podczas tworzenia kopii zapasowej miałem 2 elementy w polu docelowym.

Tak więc rozwiązanie byłoby następujące: upewnij się, że tylko 1 element w polu „miejsce docelowe”. Usuń wszystkie pozostałe, jeśli są.

Danniel Little
źródło
0

Napotkałem ten sam problem. Uruchom program SSMS jako administrator, a następnie kliknij prawym przyciskiem myszy i przywróć bazę danych. Powinno działać.

Jonny Boy
źródło
0

Myślę, że dostałem nagrodę za najbardziej kościsty powód, dla którego dostałem ten błąd. W oknie dialogowym Przywróć bazę danych lista rozwijana bazy danych w obszarze Źródło jest szara i wydaje mi się, że jest wyłączona. Przeskoczyłem do listy rozwijanej bazy danych w obszarze Miejsce docelowe, myśląc, że to źródło, i dokonałem wyboru. Spowoduje to wyświetlenie tego komunikatu o błędzie.

Gabe
źródło