Plik .bak nie jest widoczny w żadnym katalogu w SSMS


46

Mam plik .bak utworzony dzisiaj przez kogoś innego, ręcznie utworzony za pomocą SSMS 2008 R2. Próbuję ręcznie przywrócić bazę danych, niestety plik nie pojawia się, gdy przeglądam.

Mogę napisać skrypt procesu przywracania, ale widziałem już ten problem i nie jestem pewien, co może spowodować, że plik .bak się nie pojawi.


Zamierzam napisać skrypt do przywracania, chcę tylko wiedzieć, co go powoduje. To zdecydowanie .bak, nie .bak.txt ani nic.
Sean Long

Czy jesteś w stanie przeglądać folder, w którym wiesz, że plik jest i nie pojawia się? Czy nie możesz przejść do folderu?
Aaron Bertrand

Mogę przeglądać folder, po prostu nie widzę żadnych plików .bak. Sprawdziłem uprawnienia użytkownika, z którym korzystam z SSMS, jest to lokalny administrator, a plik nie jest oznaczony jako „ukryty” ani nic takiego.
Sean Long

Czy możesz gdzieś opublikować zrzut ekranu, pokazujący widok folderu Eksploratora Windows i SSMS? Wyjaśnij także w pytaniu proces, którego używasz, aby przejść do tego kroku.
Aaron Bertrand

1
(Należy również pamiętać, że konto usługi SQL Server musi również mieć uprawnienia, nie tylko użytkownik SSMS. Nie powinno to jednak uniemożliwiać wyświetlania plików .bak na liście, zanim cokolwiek z nimi zrobisz.)
Aaron Bertrand

Odpowiedzi:


39

Ten sam problem mieliśmy dzisiaj. Okazało się, że jest to problem z uprawnieniami, jak pokazano w niektórych innych odpowiedziach. Różnica polega na tym, że konieczne było dodanie konta NT SERVICE\MSSQLSERVER.

Zrzut ekranu

Zidentyfikowałem konto, porównując uprawnienia domyślnych uprawnień do folderu kopii zapasowej SQL do folderu zawierającego plik kopii zapasowej.

Dodanie konta usługi nie jest tak proste, jak się wydaje. Oto, co zadziałało dla mnie. (Server 2012 R2)

  1. Zaloguj się do serwera. (Zmiany należy dokonać na rzeczywistym serwerze, a nie za pośrednictwem udziału sieciowego).
  2. Zmień Lokalizacje na nazwę lokalnego serwera.
  3. Wpisz w NT SERVICE\MSSQLSERVERpolu nazwy. (Nie klikaj Sprawdź nazwy)
  4. Kliknij OK. Zobaczysz listę pasujących kont usług. Wybierz MSSQLSERVER i kliknij OK, aby zaakceptować wybór.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Powinieneś zobaczyć konto usługi wymienione w ustawieniach bezpieczeństwa i możesz odpowiednio dostosować uprawnienia.

Po dodaniu uprawnień (dodałem opcję Pełna kontrola, aby dopasować domyślny folder kopii zapasowej SQL.) I zrestartowaniu konsoli zarządzania SQL Server, byłem w stanie wybrać i przywrócić mój plik kopii zapasowej.


superuser.com/questions/248315/... mówi nam, jak wyświetlić listę kont użytkowników na komputerze. Dla każdej wymienionej usługi sistnieje konto wirtualne o nazwie NT Service\s, nawet jeśli usługa nie działa na tym koncie.
Tahir Hassan

2
Konto, które musiałem dodać NT Service\MSSQL$SQLSERVER2014, być może dlatego, że nazwałem moją instancjęSQLSERVER2014
thinkOfaNumber

16

Mam to dzisiaj.

Wyłączyłem udostępnianie plików, indeksowanie i wyczyściłem wszystkie otwarte sesje (ludzie zalogowali się, aby skopiować kopie zapasowe), ale problem nie zniknął.

Poszedłem do Eksploratora Windows, skopiowałem kopie zapasowe do innego folderu i przejrzałem ten plik za pośrednictwem Management Studio, i mogłem go tam zobaczyć.

Usunąłem oryginalny folder i odtworzyłem go, ponownie skopiowałem zawartość i przejrzał .bakpliki, a wszystko wróciło do normy.

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


1
to pomogło! :)
Peter PitLock

5

Kilka razy spotkałem się z tym problemem. Problem nie dotyczy SQL Server, ale uprawnienia systemu Windows do folderu. Musisz dodać odpowiednie uprawnienia do folderu, do którego skopiowałeś plik .bak (myślę, że System Networkrolę).

Najłatwiejszym rozwiązaniem jest przeniesienie pliku do domyślnego folderu kopii zapasowej w Program Files. Ma wszystkie niezbędne uprawnienia. W przypadku SQL Server 2012 tak jest

D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup

Jest to świetne rozwiązanie, ponieważ nie można otwierać potencjalnych luk w zabezpieczeniach komputera, aby przywrócić jeden plik.
Michael Potter

działa świetnie, bez potrzeby polityki i innych rzeczy
Marin

3

Też natknąłem się dzisiaj na ten sam problem. Otrzymałem plik kopii zapasowej do przywrócenia, ale nie był on dla mnie widoczny podczas przeglądania. Udało mi się jednak uzyskać dostęp do systemu plików, ale za pomocą kreatora przywracania SQL Server management Studio.

Po wydaniu niektórych odkryłem, że to problem z uprawnieniami. Usługa SQL Server działa, Network Serviceale Network Servicekonto nie ma uprawnień dostępu do folderu. Po udzieleniu uprawnień do Network Service. Plik kopii zapasowej był widoczny do przywrócenia.

Szczegółowe informacje można znaleźć na blogu .


2

Jeśli możesz go znaleźć w Eksploratorze Windows, powinieneś napisać RESTORE DATABASEpolecenie zamiast polegać na niezręcznym GUI, aby go znaleźć. Kto wie, jaki kod się tam dzieje i dlaczego nie może znaleźć pliku - przepraszam, mam tylko obejście, a nie rozwiązanie.

Upewnij się także, że plik to w rzeczywistości coś.bak, a nie coś.bak.txt (system Windows może „pomocnie” ukrywać przed tobą rozszerzenie. Nienawidzę tego domyślnego zachowania).


1

Zdarzyło mi się to dzisiaj na moim urządzeniu deweloperskim. W moim przypadku konto usługi miało uprawnienia do folderu, ale moje konto użytkownika nie. Po przyznaniu uprawnień do konta folderowi mogłem zobaczyć pliki .BAK.

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.