Nie można otworzyć urządzenia do tworzenia kopii zapasowych. Błąd systemu operacyjnego 5

139

Poniżej znajduje się zapytanie, którego używam do tworzenia kopii zapasowych (tworzenia .bak) mojej bazy danych.

Jednak za każdym razem, gdy go uruchamiam, zawsze otrzymuję ten komunikat o błędzie:

Msg 3201, poziom 16, stan 1, wiersz 1
Nie można otworzyć urządzenia kopii zapasowej „C: \ Users \ Me \ Desktop \ Backup \ MyDB.Bak”. Błąd systemu operacyjnego 5 (odmowa dostępu).

Msg 3013, poziom 16, stan 1, wiersz 1
BACKUP DATABASE kończy się nieprawidłowo.

To jest moje zapytanie:

BACKUP DATABASE AcinsoftDB
TO DISK = 'C:\Users\Me\Desktop\Backup\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';
Smiley
źródło
Cóż, komunikat o błędzie jest dość jasny, prawda? Jakiego użytkownika używa program? Czy plik bak istnieje? Czy możesz uzyskać do niego dostęp ręcznie?
Pekka
1
Czy powinniśmy założyć, że dotyczy to SQL Server ze ścieżki pliku, ponieważ nie umieściłeś produktu w tagach lub tytule?
Powerlord
Udało mi się uruchomić to zapytanie, zanim ponownie sformatowałem laptopa, jeśli to pomoże. To jest SQL Server 2008 i pracuję jako administrator. Plik bak nie istnieje, ponieważ jestem w trakcie tworzenia go za pomocą tego zapytania.
Smiley
@Smiley Face: Musisz odczytać plik SQL przez lokalną, a nie sieć. Oznacza to, że najpierw będziesz musiał przenieść plik SQL z sieci na dysk lokalny i przywrócić go.
mrjimoy_05
sqlbak.com/blog/…
Shiwangini

Odpowiedzi:

235

Tak, właśnie to zaliczyłem.

Zajrzyj do usług Windows. Start> Administracja> Usługi

Znajdź usługę na liście o nazwie: SQL Server (MSSQLSERVER) poszukaj kolumny „Zaloguj się jako” (musisz ją dodać, jeśli nie ma jej na liście).

To jest konto, którego potrzebujesz, aby nadać uprawnienia do katalogu, kliknij prawym przyciskiem myszy w eksploratorze> właściwości> Udziały (i zabezpieczenia)

UWAGA : Pamiętaj, aby nadać uprawnienia do rzeczywistego katalogu ORAZ udziału, jeśli korzystasz z sieci.

Zastosuj i poczekaj na rozpowszechnienie uprawnień, spróbuj ponownie wykonać kopię zapasową.

UWAGA 2 : jeśli tworzysz kopię zapasową przez sieć, a Twój SQL działa jako „Usługa lokalna”, to masz problem ... możesz spróbować przypisać uprawnienia lub łatwiejsze może być tworzenie kopii zapasowych lokalnie i kopiowanie poza SQL Server ( godzinę później).

UWAGA 3 : Jeśli pracujesz jako usługa sieciowa, CZASAMI komputer zdalny nie rozpozna usługi sieciowej na serwerze SQL. W takim przypadku musisz dodać uprawnienia do samego komputera, np. MyServer $.

Robin Vessey
źródło
20
Uprawnienia / add / advanced nie znalazły użytkownika na liście, ale wkleiłem w "NT Service \ MSSQLSERVER" i działało jak mistrz.
Mark A
3
Czy dodanie uprawnienia „wszyscy” do folderu obejmuje to?
DevDave
3
Zależy, jeśli jest to prawdziwie publiczne, nieuwierzytelnione, to tak. Jeśli jest to „dowolny uwierzytelniony”, wówczas USŁUGA LOKALNA na zdalnym komputerze zazwyczaj nie kwalifikuje się… ale czy naprawdę chcesz dać każdemu dostęp, dla nas jest to wykroczenie, które jest prawie zbędne.
Robin Vessey
1
Nie zadziałało dla mnie, a tworzę kopię zapasową do C: \ temp \. Ekran Uprawnienia do folderu po prostu nie rozpoznał logowania używanego przez usługę NT Service \ MSSQLSERVER , nawet podczas wklejania zgodnie z sugestią @Mark A. Czy istnieje dobre konto alternatywne do korzystania z tej usługi?
MGOwen
8
U mnie zadziałało, świetne rozwiązanie! Używam SQL Server Express 2014, więc musisz przyznać uprawnienia do zapisu do „NT Service \ MSSQL $ SQLEXPRESS”.
mikhail-t
11

Przejdź do folderu serwera SQL w menu Start i kliknij narzędzia konfiguracyjne Wybierz menedżera konfiguracji SQL Server W usługach serwera SQL w żądanej instancji zmień (Zaloguj się jako) na system lokalny

Abuleen
źródło
7

Konto usługi programu SQL Server nie ma uprawnień do zapisu w folderze C:\Users\Kimpoy\Desktop\Backup\

Martin Smith
źródło
22
jak nadać kontu usługi SQL Server uprawnienia dostępu do tego folderu? :)
Smiley
6

Niedawno miałem ten problem, ale wykonywałem zadanie tworzenia kopii zapasowej z serwera A, ale kopia zapasowa bazy danych znajdowała się na serwerze B w udziale plików na serwerze C.Gdy agent na serwerze A nakazuje serwerowi B wykonanie kopii zapasowej t -sql, jest to w rzeczywistości konto usługi, na którym działa sql na SERWERZE B, które próbuje zapisać kopię zapasową na serwerze C.

Pamiętaj tylko, że to konto usługi serwera sql wykonującego komendę BACKUP DATABASE jest tym, co wymaga uprawnień w systemie plików, a nie agent.

Jason
źródło
4

Właśnie przez to przechodziłem. Upewniłem się, że mój użytkownik logowania MSSQLSERVER miał, full accessale nadal powodowało to problemy. Zadziałało tylko wtedy, gdy przeniosłem miejsce docelowe do katalogu głównego C. Co ważniejsze, z folderu użytkownika (mimo że miałem udział z pełnymi uprawnieniami - wypróbowałem nawet opcję „Wszyscy” jako test).

Nie wiem, czy uważam, że mój problem jest „naprawiony”, ale jest on „działa”.

Tylko informacja dla wszystkich innych użytkowników, którzy natknęli się na ten wątek.

DNK
źródło
1
Myślę, że jest to spowodowane domenami przedsiębiorstwa, w których ścieżki użytkownika znajdują się na dyskach sieciowych, więc użytkownik ma do nich przezroczysty dostęp, niezależnie od komputera, na który się loguje. Taka jak ta sytuacja: superuser.com/a/730519
Bon
@Bon Thanks! To rozwiązało problem. Ścieżka, na której miałem plik kopii zapasowej, była w rzeczywistości ścieżką sieciową.
JonM
4

Mam ten sam problem z SQL Express 2014 SP1 na Windows 10.

Rozwiązanie, które działa

  1. Otwórz usługę, wpisując Services
  2. Zlokalizuj i otwórz SQL Server (SQLExpress)
  3. Przejdź do zakładki LogOn
  4. Wybierz lokalne konto systemowe (sprawdź również, czy zezwalaj usługom na interakcję z komputerem)
  5. Kliknij OK . Zatrzymaj usługę. Uruchom ponownie usługę.
  6. Problem rozwiązany
Sawarkar vikas
źródło
3

Aby dowiedzieć się, któremu użytkownikowi musisz nadać uprawnienia do wykonania procesu przywracania, możesz wykonać następujące czynności:

Musisz przejść do serwera, na którym jest zainstalowany SQL Server. Znajdź Menedżera konfiguracji programu SQL Server

wprowadź opis obrazu tutaj

Następnie musisz przejść do „SQL Server Services”

wprowadź opis obrazu tutaj

Pod Twoją instancją SQL Server (MSSQLSERVER) będzie znajdować się konto z kolumną „Logon As”, w moim przypadku jest to NT Service \ MSSQLSERVER .

To jest konto, które musisz dodać na karcie Bezpieczeństwo w źródłowej lokalizacji .bak i nadać temu użytkownikowi uprawnienia do odczytu, aby plik kopii zapasowej mógł zostać odczytany.

Załóżmy, że plik kopii zapasowej znajduje się w folderze „D: \ Shared”, a następnie musisz nadać takie uprawnienia:

wprowadź opis obrazu tutaj

Raghav
źródło
2

Miałem podobny problem. Dodałem uprawnienia do zapisu do samego pliku .bak i folderu, w którym zapisywałem kopię zapasową, dla użytkownika usługi NETWORK SERVICE. Aby dodać uprawnienia, po prostu kliknij prawym przyciskiem myszy plik / katalog, który chcesz zmienić, wybierz kartę zabezpieczeń i dodaj tam odpowiednich użytkowników / uprawnienia.

Eric Bernier
źródło
1
co masz na myśli mówiąc „odpowiedni”?
Steam
2

Oto, co zrobiłem, aby ominąć ten problem.

1) Przejdź do kopii zapasowej

2) Usuń docelową ścieżkę do pliku na dysk

3) Kliknij Dodaj

4) W polu Nazwa pliku: ręcznie wpisz nazwę kopii zapasowej po .. \ kopia zapasowa jak poniżej, gdzie Yourdb.bak jest nazwą kopii zapasowej bazy danych

C: \ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ Backup \ Yourdb.bak

5) Kliknij OK

Mam nadzieję że to pomoże!

dpen82
źródło
2

Jednym z powodów, dla których tak się dzieje, jest uruchomienie usługi MSSQLSERVER bez korzystania z systemu lokalnego. Aby rozwiązać ten problem, wykonaj następujące czynności.

  1. Otwórz bieg za pomocą Windows + R.
  2. Wpisz services.msc, a otworzy się okno dialogowe usług
  3. Znajdź SQL Server (MSSQLSERVER)
  4. Kliknij prawym przyciskiem myszy i kliknij właściwości.
  5. Przejdź do zakładki Logowanie
  6. Wybierz lokalne konto systemowe i kliknij „Zastosuj” i „OK”
  7. Kliknij łącze Zatrzymaj w lewym panelu, wybierając opcję „SQL Server (MSSQLSERVER)” i uruchom ponownie po całkowitym zatrzymaniu.
  8. Ciesz się kopią zapasową.

Mam nadzieję, że to ci pomoże, tak jak mi pomogło. Twoje zdrowie!

Gaurav Amatya
źródło
1

Wiem, że nie jest to dokładne rozwiązanie, ale użycie zewnętrznych ścieżek dysku rozwiązuje ten problem.

BACKUP DATABASE AcinsoftDB
TO DISK = 'E:\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';
Cem Mutlu
źródło
1

SQL Server nie może uzyskać dostępu (zapisać) do kopii zapasowej w określonej lokalizacji.

Najpierw musisz zweryfikować konto usługi, na którym działa serwer Sql. Można to zrobić za pomocą Menedżera konfiguracji lub Services.msc.

lub

Użyj poniższego zapytania:

SELECT  DSS.servicename,
    DSS.startup_type_desc,
    DSS.status_desc,
    DSS.last_startup_time,
    DSS.service_account,
    DSS.is_clustered,
    DSS.cluster_nodename,
    DSS.filename,
    DSS.startup_type,
    DSS.status,
    DSS.process_id FROM    sys.dm_server_services AS DSS;

Teraz spójrz na kolumnę service_account i zanotuj ją.

Przejdź do lokalizacji, w której próbujesz wykonać kopię zapasową, w Twoim przypadku: C: \ Users \ Me \ Desktop \ Backup

Kliknij prawym przyciskiem myszy -> Właściwości -> Bezpieczeństwo ->

Dodaj konto usługi i nadaj uprawnienia do odczytu / zapisu. To rozwiąże problem.

Ramakant Dadhichi
źródło
0

Msg 3201, poziom 16, stan 1, wiersz 1 Nie można otworzyć urządzenia kopii zapasowej „C: \ Backup \ Adventure_20120720_1024AM.trn”. Błąd systemu operacyjnego 5 (odmowa dostępu). Msg 3013, poziom 16, stan 1, wiersz 1 BACKUP LOG kończy się nieprawidłowo.

Zweryfikowałem folder kopii zapasowych na dysku C, czy nowe konto usługi ma pełne uprawnienia dostępu do kontroli, czy nie ?, zdałem sobie sprawę, że konto usługi „Test \ Kiran” nie ma uprawnień do pełnej kontroli.

Wykonaj poniższe kroki, aby zapewnić pełną kontrolę nad kontem usługi:

  1. Przejdź do dysku C, kliknij prawym przyciskiem myszy folder kopii zapasowej.
  2. Wybierz zakładkę Bezpieczeństwo.
  3. Kliknij przycisk Edytuj, otworzy się nowe okno.
  4. Kliknij przycisk Dodaj i wprowadź konto użytkownika Test \ Kiran i kliknij przycisk Sprawdź nazwę, to potwierdzi, że wprowadzony użytkownik istnieje, czy nie, jeśli istnieje, pokaże użytkownika w oknie, wybierz OK.
  5. Wybierz wprowadzoną nazwę użytkownika i zaznacz pole wyboru Pełna kontrola w sekcji Zezwalaj.
user2459051
źródło
0

Sprawdź dostęp do dysków, najpierw utwórz jeden folder i przejdź do właściwości folderu,

Możesz znaleźć zakładkę bezpieczeństwa, kliknij na nią, sprawdź, czy Twój identyfikator użytkownika ma dostęp, czy nie.

jeśli nie możesz znaleźć swojego identyfikatora, kliknij przycisk dodawania i podaj nazwę użytkownika z pełnym dostępem.

user2703575
źródło
0

Udostępnij ten folder i użyj ścieżki UNC, na przykład: \ pc \ backups \ mydb.bak

Następnie możesz przestać udostępniać.

Niezbyt eleganckie, ale rozwiązuje wszystkie problemy z uprawnieniami (musisz również przyznać uprawnienia do udostępniania, jak wspomniano powyżej)

Giennadij G.
źródło
0

Wystąpił ten problem, gdy plik .BAK był tymczasowo przechowywany w folderze zaszyfrowanym funkcją BitLocker. Zachował szyfrowanie po przeniesieniu do innego folderu.

Konto NETWORK SERVICE nie mogło odszyfrować pliku i przekazało ten dokładnie informacyjny komunikat o błędzie.

Usunięcie szyfrowania BitLocker (poprzez odznaczenie opcji „Szyfruj zawartość, aby zabezpieczyć dane” we właściwościach pliku) w pliku .BAK rozwiązało problem.

Eric J.
źródło
0

Mam ten sam błąd. Kolejne zmiany pomogły mi to naprawić.

Musiałem sprawdzić Server Manager-> Tool-> Services i znaleźć użytkownika (kolumna „Log On As”) do usługi: SQL Server (SQLEXPRESS).

Poszedłem do folderu lokalnego (C: \ Users \ Me \ Desktop \ Backup) i dodałem „NT Service \ MSSQL $ SQLEXPRESS” jako użytkownika, aby nadać uprawnienia do zapisu.

Hiren Parghi
źródło
0

Cześć, musisz zmienić zapytanie z:

BACKUP DATABASE AcinsoftDB
TO DISK = 'C:\Users\Me\Desktop\Backup\MyDB.Bak'

do

BACKUP DATABASE AcinsoftDB
TO DISK = N'C:\Users\Me\Desktop\Backup\MyDB.Bak'

Musisz dodać N przed ścieżką, która działa dla mnie.

Robert Peter Bronstein
źródło
0

W moim przypadku zapomniałem nazwać plik kopii zapasowej i nadal dawał mi ten sam błąd uprawnień: /

TO DISK N'{path}\WRITE_YOUR_BACKUP_FILENAME_HERE.bak'
Panie Brigante
źródło
0

Rozwiązałem ten sam problem, wykonując następujące 3 kroki:

  1. Przechowuję plik kopii zapasowej w innej ścieżce folderu, która działała poprawnie.
  2. Zobacz różne karty bezpieczeństwa dwa foldery (jak na obrazku poniżej).
  3. Uprawnienia do edycji w folderze karty zabezpieczeń, które nie działają prawidłowo.

wprowadź opis obrazu tutaj

Mohsen Najafzadeh
źródło