Utworzyłem bazę danych na moim komputerze lokalnym, a następnie wykonałem kopię zapasową o nazwie tables.bak
table DataLabTables
.
Przeniosłem tę kopię zapasową na komputer zdalny bez tej tabeli i próbowałem przywrócić, ale otrzymałem następujący błąd:
System.Data.SqlClient.SqlError: System operacyjny zwrócił błąd „5 (odmowa dostępu.)” Podczas próby „RestoreContainer :: ValidateTargetForCreation” na „c: \ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ DataLabTables” .mdf ”.
Jak mogę naprawić swoje prawa, jeśli na tym polega problem?
Z komunikatu o błędzie wynika, że wystąpił błąd podczas sprawdzania poprawności celu (
c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf
) operacji przywracania.To brzmi jak:
a) ten plik już istnieje (ponieważ został już przywrócony) i jest używany przez SQL Server
lub
b) ten katalog w ogóle nie istnieje
W swoim pytaniu wspomniałeś, że utworzyłeś kopię zapasową tej tabeli - nie tak działają kopie zapasowe SQL Server. Te kopie zapasowe to zawsze cała baza danych (lub co najmniej jedna lub kilka grup plików z tej bazy danych).
Moje przeczucie jest takie: już wcześniej przywróciłeś tę bazę danych, a teraz, przy drugim przywracaniu, nie zaznaczyłeś pola wyboru „Zastąp istniejącą bazę danych” w kreatorze przywracania - w ten sposób istniejący plik nie może zostać nadpisany i przywracanie się nie powiedzie.
Użytkownik, który uruchamia przywracanie na serwerze zdalnym, oczywiście nie ma dostępu do tego katalogu na serwerze zdalnym.C:\program files\....
jest katalogiem chronionym - zwykli użytkownicy (nie będący administratorami) nie mają dostępu do tego katalogu (i jego podkatalogów).Najłatwiejsze rozwiązanie: spróbuj umieścić plik BAK w innym miejscu (np.C:\temp
) I przywróć go stamtądźródło
RESTORE
polecenie nie powiedzie się, jeśli plik istnieje, nawet jeśli nie jest używany przez SQL Server (np. MDF / Pliki LDF pozostają na miejscu po poprzednim odłączeniu). Natknąłem się na to w niestandardowej implementacji wysyłania dzienników opartej na T-SQL w celu przeprowadzenia poważnej migracji setek baz danych w ciągu ostatnich kilku tygodni. Nie jestem pewien, czy komunikat o błędzie brzmiał „odmowa dostępu”, mógł być mniej konkretny.Miałem ten sam problem. Okazało się, że moje
SQL Server
iSQL Server Agent
usługilogon as
działały naNetwork Services
koncie, które nie miało uprawnień do zapisu, aby wykonać przywrócenie kopii zapasowej.Zmieniłem obie te usługi, aby logowały się jako
Local System Account
i to rozwiązało problem.źródło
Niedawno spotkałem się z tym problemem w SQL 2008 R2 i poniższe rozwiązanie zadziałało:
1) Utwórz nową bazę danych o takiej samej nazwie, jak ta, którą próbujesz przywrócić 2) Podczas przywracania użyj tej samej nazwy, której użyłeś powyżej i w opcjach kliknij opcję nadpisania
Możesz dać powyższemu szansę, jeśli inne rozwiązania nie działają.
źródło
Źródło
źródło
Miałem podobny problem. Próbowałem przywrócić plik .bak 2005 i otrzymałem dokładnie ten sam błąd. Bezskutecznie wybrałem również opcję nadpisywania.
moim rozwiązaniem było przyznanie użytkownikowi SQL dostępu do danego katalogu, przechodząc do folderu i edytując prawa dostępu na ekranie właściwości.
źródło
też straciłem kilka godzin na ten problem. ale to działa:
„odmowa dostępu” w moim przypadku naprawdę oznaczała „odmowa dostępu”. Konto użytkownika mssqlstudio na moim urządzeniu z systemem Windows NIE miało pełnej kontroli nad folderem określonym w komunikacie o błędzie. dałem mu pełną kontrolę. nie odmówiono już dostępu i przywrócenie powiodło się.
dlaczego folder został zamknięty dla studia? kto wie ? Mam wystarczająco dużo pytań, aby sobie z nimi poradzić bez próbowania odpowiedzi na więcej.
źródło
Miałem ten problem, zalogowałem się jako administrator i naprawiłem problem.
źródło
Innym scenariuszem może być istnienie wielu ścieżek do bazy danych. Najpierw zanotuj ścieżkę, w której są obecnie przechowywane nowe bazy danych. Więc jeśli utworzysz nową pustą bazę danych, a następnie to zrobisz
Tasks/Restore
, upewnij się, że ścieżka, której próbuje użyć przywracanie, jest tym samym katalogiem, w którym została utworzona pusta baza danych. Nawet jeśli ścieżka przywracania jest legalna, nadal będziesz mieć odmowę dostępu błąd, jeśli nie jest to bieżąca ścieżka, z którą pracujesz. Bardzo łatwo zauważyć, kiedy ścieżka nie jest legalna, znacznie trudniej zauważyć, kiedy ścieżka jest legalna, ale nie obecna ścieżka.źródło
Przepraszam, bo nie mogę komentować ...
Miałem ten sam problem. W moim przypadku problem był związany z próbą przywrócenia w starym folderze serwera sql (który istniał na serwerze). Jest to spowodowane przywróceniem starej kopii zapasowej serwera sql (tj. SQL Server 2012 Backup) na nowym serwerze sql (SQL Server 2014). Prawdziwy problem nie różni się zbytnio od odpowiedzi @marc_s. W każdym razie zmieniłem tylko folder docelowy na nowy folder DATA serwera SQL.
źródło
Może to nie jest najlepsze rozwiązanie, ale próbowałem przywrócić dane w SQL Server 2005, ale przeszedłem na SQL Server 2008 i zadziałało.
źródło
Mam taki problem. Błąd spowodowany włączoną kompresją w folderach SQL Server.
źródło
Frnds ... Miałem ten sam problem podczas ograniczania bazy danych i próbowałem każdego rozwiązania, ale nie udało mi się go rozwiązać. Następnie próbowałem ponownie zainstalować SQL 2005 i problem został rozwiązany. Ostatnio zapomniałem sprawdzić opcję dostosowywania podczas instalowania SQL .. Podczas instalacji pojawia się dwa razy i sprawdzam tylko jeden raz.
źródło
W moim przypadku - musiałem dwukrotnie sprawdzić ścieżkę kopii zapasowej bazy danych, z której przywracałem. Wcześniej przywróciłem go z innej ścieżki, kiedy robiłem to po raz pierwszy. Naprawiłem ścieżkę kopii zapasowej, aby użyć ścieżki kopii zapasowej, której użyłem za pierwszym razem i zadziałało!
źródło
Skończyło się na utworzeniu nowych folderów dla danych i dzienników i działało poprawnie, musiał być problem z uprawnieniami do folderu / pliku.
źródło
Dzieje się tak również, jeśli ścieżki są poprawne, ale konto usługi nie jest właścicielem plików danych (a mimo to ma wystarczające uprawnienia do odczytu / zapisu). Może się tak zdarzyć, jeśli uprawnienia do plików zostały zresetowane, aby odpowiadały uprawnieniom folderu (oczywiście, gdy usługa została zatrzymana).
Najłatwiejszym rozwiązaniem w tym przypadku jest odłączenie każdej bazy danych i ponowne jej dołączenie (bo przy dołączaniu właściciel zmienia się na konto serwisowe).
źródło
Spróbuj tego:
W oknie kreatora przywracania bazy danych przejdź do zakładki Pliki, odznacz pole wyboru „Przenieś wszystkie pliki do folderu”, a następnie zmień miejsce docelowe przywracania z C: na inny dysk. Następnie kontynuuj zwykły proces przywracania. Zostanie pomyślnie przywrócony.
źródło
Miałem ten sam problem, ale użyłem serwera sql 2008 r2, musisz sprawdzić opcje i zweryfikować ścieżki, w których sql zamierza zapisać pliki .mdf i .ldf, musisz wybrać ścieżkę instalacji serwera sql. Rozwiązałem swój problem z tym, mam nadzieję, że ci to pomoże.
źródło
Następnie spróbuj przenieść go do podfolderu pod C :, ale sprawdź, czy użytkownik ma pełne prawa do folderu, którego używasz.
źródło