Zaczynam się uczyć SQL i mam książkę, która zawiera bazę danych do pracy. Poniższe pliki znajdują się w katalogu, ale problem polega na tym, że po uruchomieniu zapytania wyświetla mi się ten błąd:
Msg 5120, poziom 16, stan 101, wiersz 1 Nie można otworzyć pliku fizycznego „C: \ Murach \ SQL Server 2008 \ Databases \ AP.mdf”. Błąd systemu operacyjnego 5: „5 (Odmowa dostępu.)”.
CREATE DATABASE AP
ON PRIMARY (FILENAME = 'C:\Murach\SQL Server 2008\Databases\AP.mdf')
LOG ON (FILENAME = 'C:\Murach\SQL Server 2008\Databases\AP_log.ldf')
FOR ATTACH
GO
W książce autor mówi, że powinno działać, ale w moim przypadku nie działa. Szukałem, ale nie wiem dokładnie w czym jest problem, więc zamieściłem to pytanie.
sql
sql-server
dijai jijfs
źródło
źródło
Odpowiedzi:
Konto usługi aparatu bazy danych programu SQL Server musi mieć uprawnienia do odczytu / zapisu w nowym folderze.
Sprawdź to
źródło
Administrators Group
MSSQL$SQLEXPRESS
), może nie być oczywiste, że musisz dodać konto do listy uprawnień do folderów jako:NT Service\MSSQL$SQLEXPRESS
Stary post, ale oto krok po kroku, który działał dla SQL Server 2014 działającego pod Windows 7:
Voilá!
Myślę, że ustawienie konta logowania mogło być opcją podczas instalacji, ale jeśli tak, nie było to ustawienie domyślne i łatwo było je przeoczyć, jeśli nie byłeś jeszcze świadomy tego problemu.
źródło
Aby obejść problem odmowy dostępu, uruchomiłem SSMS jako administrator, co pozwoliło mi dołączyć bazę danych z mojego dysku lokalnego. Baza danych została utworzona w innej instancji SQL i Windows.
źródło
Jest to problem związany z systemem Windows, w którym SQL Server nie ma odpowiednich uprawnień do folderu zawierającego plik .bak i stąd ten błąd.
Najłatwiejszym rozwiązaniem jest skopiowanie pliku .bak do domyślnej lokalizacji kopii zapasowej SQL, która ma wszystkie niezbędne uprawnienia. Nie musisz majstrować przy niczym innym. W programie SQL SERVER 2012 ta lokalizacja to
źródło
Miałem ten problem. Po prostu uruchom SQL Server jako administrator
źródło
Tak, zgadza się. Najpierw powinieneś znaleźć swoje konto usługi sqlserver, możesz je zobaczyć w Menedżerze zadań, naciskając jednocześnie ctrl + alt + delete; Następnie musisz nadać uprawnienie do odczytu / zapisu „C : \ Murach \ SQL Server 2008 \ Databases ”do konta usługi.
źródło
Problem wynika z braku uprawnień dla SQL Server do dostępu do plików mdf i ldf. Wszystkie te procedury będą działać:
źródło
Rozwiązuję ten problem, dodając
Full control
uprawnienia dla obu.mdf
i.ldf
plików dlaUsers
grupy.źródło
U mnie rozwiązano to w następujący sposób w SQL Server Management studio -Zaloguj się jako admin (zalogowałem się jako uwierzytelnianie systemu Windows) -Załącz plik mdf (kliknij prawym przyciskiem Baza danych | dołącz | Dodaj) -Zaloguj się jako administrator -Zaloguj się jako zwykły użytkownik
źródło
W tym momencie faktyczne uprawnienia serwera nie będą miały znaczenia; wszystko wygląda dobrze. Sam SQL Server wymaga uprawnień do folderów.
w zależności od wersji możesz dodać uprawnienia SERVERNAME $ MSSQLSERVER, aby dotknąć swojego folderu. W przeciwnym razie musi znajdować się w domyślnym katalogu BACKUP (albo tam, gdzie go zainstalowałeś, albo domyślnie c: \ programfiles (x) \ MSSQL \ BACKUP.
źródło
Nawet jeśli wykonasz poniższe kroki, MOŻESZ otrzymać ten sam komunikat o błędzie.
Nadal mam błąd uprawnień, ale potem zauważyłem, że na ekranie Dołącz w dolnej sekcji NADAL pokazywał plik LOG, a komunikat o błędzie pozostał ten sam.
Mam nadzieję, że pomoże to komuś, kto zrobił to samo.
źródło
Bardzo proste rozwiązanie.
źródło
Użyłem Entity Framework w mojej aplikacji i miałem ten problem, ustawiłem dowolne uprawnienia w folderach i usługach systemu Windows i nie działają, po czym uruchamiam aplikację jako administrator (kliknij prawym przyciskiem myszy w pliku exe i wybierz "uruchom jako administrator") i to działa w porządku.
źródło
Jeśli pojawi się ten błąd w
.MDF
pliku wAPP_DATA
folderze (lub gdziekolwiek go umieścisz) dla projektu Visual Studio, sposób, w jaki to zrobiłem, to po prostu skopiowanie uprawnień z istniejącegoDATA
folderu tutaj (używam SQL Express 2014 do obsługi starsza aplikacja):(uwaga: Twoja rzeczywista ścieżka instalacji jest różna - zwłaszcza jeśli nazwa Twojej instancji jest inna)
DATA
Najpierw kliknij dwukrotnie folder jako administrator, aby upewnić się, że masz dostęp, a następnie otwórz właściwości folderu i wykonaj to samo dlaAPP_DATA
folderu. W moim przypadku brakującym użytkownikiem byłMSSQL$SQLEXPRESS2014
(bo nazwałem instancjęSQLEXPRESS2014
- Twój może być inny). Tak się składa, że jest to również nazwa użytkownika usługi SQL Server.źródło
Z jakiegoś powodu ustawienie wszystkich poprawnych uprawnień nie pomogło w moim przypadku. Miałem plik
db.bak
, którego nie mogłem przywrócić z powodu5(Access is denied.)
błędu. Plik został umieszczony w tym samym folderze, co kilka innych plików kopii zapasowych, a wszystkie uprawnienia były identyczne jak w przypadku innych plików. Udało mi się przywrócić wszystkie inne pliki oprócz tegodb.bak
pliku. Próbowałem nawet zmienić użytkownika logowania do usługi SQL Server - wciąż ten sam wynik. Próbowałem skopiować plik bez skutku.Następnie próbowałem po prostu utworzyć identyczny plik, wykonując
zamiast kopiować plik. I voila, zadziałało!
db2.bak
przywrócone pomyślnie.Podejrzewam, że inne problemy z odczytem pliku kopii zapasowej mogą być błędnie zgłaszane, jak
5(Access is denied.)
w MS SQL.źródło
W Linuksie poszedłem do
/var/opt/mssql/data/
folderu i otworzyłem terminal, asudo
następnie zmieniłem moje uprawnienia do plików * .mdf i * .ldf, jak poniżej, w których zastępujeszyourDB
nazwę pliku bazy danych imyUser
aktualnie zalogowaną nazwę użytkownika:Następnie został ponownie podłączony bez żadnego problemu.
źródło
Oznacza to, że użytkownik logowania SSMS nie ma uprawnień do pliku .mdf. Tak to działa dla mnie:
Otworzyłem SSMS (Uruchom jako administrator) i zaloguj się jako administrator, kliknij prawym przyciskiem myszy w bazie danych, dołącz, kliknij dodaj, wybierz plik .mdf, kliknij OK. Gotowe.
źródło