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.

Sean Long
źródło
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.

AdamsTips
źródło
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.

użytkownik27816
źródło
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
Jackofall
źródło
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 .

Skorpion
źródło
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).

Aaron Bertrand
źródło
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.

Szef gastronomii
źródło