Impossibile aprire il dispositivo di backup. Errore del sistema operativo 5


139

Di seguito è la query che sto usando per il backup (creare un .bak) il mio database.

Tuttavia, ogni volta che lo eseguo, ricevo sempre questo messaggio di errore:

Messaggio 3201, livello 16, stato 1, riga 1
Impossibile aprire il dispositivo di backup "C: \ Users \ Me \ Desktop \ Backup \ MyDB.Bak". Errore del sistema operativo 5 (accesso negato.).

Messaggio 3013, livello 16, stato 1, riga 1
BACKUP DATABASE termina in modo anomalo.

Questa è la mia domanda:

BACKUP DATABASE AcinsoftDB
TO DISK = 'C:\Users\Me\Desktop\Backup\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';

Bene, il messaggio di errore è abbastanza chiaro, no? Quale utente esegue il programma? Il file bak esiste? Puoi accedervi manualmente?
Pekka,

1
Dovremmo supporre che questo sia per SQL Server dal percorso del file, poiché non hai inserito il prodotto nei tag o nel titolo?
Powerlord,

Sono stato in grado di eseguire questa query prima di riformattare il mio laptop se mi fosse di aiuto. Questo è SQL Server 2008 e sto correndo come amministratore. Il file bak non esiste poiché sono in procinto di crearlo con questa query.
Faccina

@Smiley Face: devi leggere il file SQL attraverso il tuo locale, non in rete. Quindi significa che dovrai prima spostare il file SQL dalla rete sull'unità locale e ripristinarlo.
mrjimoy_05

Risposte:


235

Sì, ho appena segnato questo.

Cerca nei servizi di Windows. Start> Amministrazione> Servizi

Trova il servizio nell'elenco chiamato: SQL Server (MSSQLSERVER) cerca la colonna "Accedi come" (è necessario aggiungerlo se non esiste nell'elenco).

Questo è l'account necessario per concedere le autorizzazioni alla directory, fare clic con il tasto destro in explorer> proprietà> Condivisioni (e sicurezza)

NOTA : ricordarsi di concedere le autorizzazioni alla directory effettiva E alla condivisione se si sta attraversando la rete.

Applicare e attendere la propagazione delle autorizzazioni, riprovare a eseguire il backup.

NOTA 2 : se si esegue il backup attraverso la rete e l'SQL è in esecuzione come "Servizio locale", allora si è in difficoltà ... si può provare ad assegnare le autorizzazioni o potrebbe essere più facile eseguire il backup localmente e eseguire copie di backup all'esterno di SQL Server ( un'ora dopo).

NOTA 3 : se si esegue come servizio di rete, SOMETIMES il computer remoto non riconoscerà il servizio di rete sul proprio SQL Server. In tal caso, è necessario aggiungere autorizzazioni per il computer stesso, ad es. MyServer $.


20
Le autorizzazioni / aggiungi / avanzate non hanno trovato l'utente nell'elenco, ma ho incollato in "Servizio NT \ MSSQLSERVER" e ha funzionato come un campione.
Segna A

3
L'aggiunta dell'autorizzazione "tutti" a una cartella copre questo?
DevDave,

3
Dipende, se è il vero autentico pubblico non autenticato, allora sì. Se si tratta di "qualsiasi autenticato", il SERVIZIO LOCALE su una macchina remota di solito non si qualificherà ... ma vuoi davvero dare a tutti l'accesso, per noi è un reato quasi saccheggiabile.
Robin Vessey,

1
Non ha funzionato per me e sto solo eseguendo il backup su C: \ temp \. La schermata Autorizzazioni cartella semplicemente non riconosceva l'accesso utilizzato dal servizio, NT Service \ MSSQLSERVER , anche se incollato come suggerito da @Mark A. Esiste un buon account alternativo da utilizzare per quel servizio?
MGOwen

8
Ha funzionato per me, ottima soluzione! Sto usando SQL Server Express 2014, quindi è necessario concedere l'autorizzazione di scrittura a "Servizio NT \ MSSQL $ SQLEXPRESS".
mikhail-t,

11

Passare alla cartella del server SQL nel menu Start e fare clic sugli strumenti di configurazione Selezionare Gestione configurazione SQL Server Sui servizi SQL Server, nell'istanza desiderata modificare (Accedi come) nel sistema locale


7

L'account del servizio SQL Server non dispone delle autorizzazioni per scrivere nella cartella C:\Users\Kimpoy\Desktop\Backup\


22
come autorizzo l'account del servizio SQL Server ad accedere a questa cartella? :)
Faccina

6

Di recente ho riscontrato questo problema, tuttavia stavo eseguendo il processo di backup dal server A ma il database di cui era stato eseguito il backup era sul server B in una condivisione file sul server C. Quando l'agente sul server A dice al server B di eseguire un backup t -sql comando, in realtà è l'account di servizio con cui sql è in esecuzione su SERVER B che tenta di scrivere il backup sul server C.

Basta ricordare, è l'account di servizio del server sql che esegue l'effettivo comando BACKUP DATABASE è ciò che richiede privilegi sul file system, non sull'agente.


4

Stavo solo attraversando questo da solo. Mi ero assicurato che il mio utente di login MSSQLSERVER avesse full accessma stava ancora causando problemi. Ha funzionato solo una volta che ho spostato la destinazione nella radice di C. Ancora più importante da una cartella utente (anche se avevo una condivisione con autorizzazioni complete - ho anche provato "Tutti" come test).

Non so se considero il mio problema "risolto", tuttavia è "funzionante".

Solo una FYI per tutti gli altri utenti che si imbattono in questa discussione.


1
Penso che ciò sia causato da domini aziendali che hanno percorsi utente che risiedono su unità di rete, quindi sono accessibili all'utente in modo trasparente, indipendentemente dalla macchina a cui accedono. Come questa situazione: superuser.com/a/730519
Bon

@Bon grazie! Questo risolto il problema per me. Il percorso su cui avevo il file di backup era in realtà un percorso di rete.
JonM,

4

Devo affrontare lo stesso problema con SQL Express 2014 SP1 su Windows 10.

Soluzione che funziona

  1. Apri Servizio digitando Servizi
  2. Individua e apri SQL Server (SQLExpress)
  3. Vai alla scheda LogOn
  4. Scegli l'account di sistema locale (controlla anche se i servizi possono interagire con il desktop)
  5. Clicca OK. Interrompere il servizio. Riavvia il servizio.
  6. Problema risolto

3

Per scoprire quale utente è necessario autorizzare a eseguire il processo di ripristino, è possibile seguire i seguenti passaggi:

Devi andare sul tuo server su cui è installato SQL Server. Trova Gestione configurazione SQL Server

inserisci qui la descrizione dell'immagine

Successivamente, devi andare a "Servizi SQL Server"

inserisci qui la descrizione dell'immagine

Nella tua istanza di SQL Server (MSSQLSERVER) ci sarà un account con la colonna "Accesso come", nel mio caso si tratta di NT Service \ MSSQLSERVER .

Questo è l'account che è necessario aggiungere nella scheda Sicurezza della posizione .bak di origine e assegnare all'utente le autorizzazioni di "Lettura" in modo che il file di backup possa essere letto.

Supponiamo che il tuo file di backup sia presente nella cartella "D: \ Shared", quindi devi fornire autorizzazioni come questa:

inserisci qui la descrizione dell'immagine


2

Ho avuto un problema simile. Ho aggiunto le autorizzazioni di scrittura al file .bak stesso e alla mia cartella in cui stavo scrivendo il backup per l'utente del SERVIZIO DI RETE. Per aggiungere le autorizzazioni basta fare clic con il tasto destro del mouse su quale file / directory si desidera modificare, selezionare la scheda di sicurezza e aggiungere lì gli utenti / autorizzazioni appropriati.


1
cosa intendi per appropriato?
Steam

2

Ecco cosa ho fatto per evitare il problema.

1) Vai al backup

2) Rimuovere il percorso del file di destinazione sul disco

3) Fare clic su Aggiungi

4) Nella casella Nome file: digitare manualmente il nome del backup dopo .. \ backup come sotto dove Yourdb.bak è il nome del backup del database

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

5) Fare clic su OK

Spero che questo ti aiuti!


2

Uno dei motivi per cui ciò accade è che stai eseguendo il tuo servizio MSSQLSERVER senza utilizzare un sistema locale. Per risolvere questo problema, attenersi alla seguente procedura.

  1. Apri eseguito utilizzando Windows + R
  2. Digita services.msc e si aprirà una finestra di dialogo dei servizi
  3. Trova SQL Server (MSSQLSERVER)
  4. Fare clic destro e fare clic su Proprietà.
  5. Vai alla scheda Accedi
  6. Seleziona Account di sistema locale e fai clic su "Applica" e "OK"
  7. Fare clic sul collegamento Arresta nel riquadro di sinistra selezionando "SQL Server (MSSQLSERVER)" e riavviarlo una volta arrestato completamente.
  8. Goditi il ​​tuo backup.

Spero che ti aiuti bene, come ha fatto per me. Saluti!


1

So che non è una soluzione esatta, ma l'utilizzo di percorsi di unità esterne risolve questo problema.

BACKUP DATABASE AcinsoftDB
TO DISK = 'E:\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';

1

SQL Server non è in grado di accedere (scrivere) al backup nella posizione specificata.

Innanzitutto è necessario verificare l'account del servizio su cui è in esecuzione il server SQL. Questo può essere fatto usando Configuration manager o Services.msc.

o

Usa la query seguente:

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;

Ora guarda la colonna service_account e annotala.

Vai alla posizione in cui stai tentando di eseguire il backup. Nel tuo caso: C: \ Users \ Me \ Desktop \ Backup

Tasto destro del mouse -> Proprietà -> Sicurezza ->

Aggiungi l'account del servizio e fornisci le autorizzazioni di lettura / scrittura. Questo risolverà il problema.



0

Messaggio 3201, livello 16, stato 1, riga 1 Impossibile aprire il dispositivo di backup "C: \ Backup \ Adventure_20120720_1024AM.trn". Errore del sistema operativo 5 (accesso negato.). Messaggio 3013, livello 16, stato 1, riga 1 BACKUP LOG si sta chiudendo in modo anomalo.

Ho verificato la cartella di backup sull'unità C, Il nuovo account di servizio dispone dell'autorizzazione di accesso con controllo completo o no ?, Mi sono reso conto che l'account di servizio "Test \ Kiran" non dispone dell'autorizzazione di protezione con controllo completo.

Seguire i passaggi seguenti per dare il pieno controllo all'account del servizio:

  1. Vai su C drive, fai clic destro sulla cartella Backup.
  2. Seleziona la scheda Sicurezza.
  3. Fai clic sul pulsante Modifica, si aprirà una nuova finestra.
  4. Fai clic sul pulsante Aggiungi e inserisci l'account utente Test \ Kiran e fai clic sul pulsante Controlla nome, questo confermerà che l'utente inserito è esistente o meno, se esiste mostrerà l'utente sulla finestra, seleziona OK.
  5. Selezionare il nome utente inserito e selezionare la casella di controllo Controllo completo in Consenti.

0

Controlla l'accesso alle unità. Prima crea una cartella e vai alle proprietà della cartella,

È possibile trovare la scheda di sicurezza, fare clic su quel controllo per verificare se l'id utente ha accesso o meno.

se non riesci a trovare il tuo ID, fai clic sul pulsante Aggiungi e assegna il nome utente con accesso completo.


0

Condividi questa cartella e utilizza il percorso UNC, ad esempio: \ pc \ backups \ mydb.bak

Quindi puoi interrompere la condivisione.

Non molto elegante, ma risolve tutti i problemi di autorizzazione (è necessario fornire anche le autorizzazioni per la condivisione, come menzionato sopra)


0

Ho riscontrato questo problema quando il file .BAK è stato temporaneamente archiviato in una cartella crittografata con BitLocker. Ha mantenuto la crittografia dopo che è stata spostata in un'altra cartella.

L'account SERVIZIO DI RETE non è stato in grado di decrittografare il file e ha fornito questo messaggio di errore completamente informativo.

La rimozione della crittografia BitLocker (deselezionando "Crittografa contenuto per proteggere i dati" nelle proprietà del file) sul file .BAK ha risolto il problema.


0

Ho lo stesso errore Le seguenti modifiche mi hanno aiutato a risolvere questo problema.

Ho dovuto controllare Server Manager-> Strumento-> Servizi e trovare l'utente (colonna "Accedi come") per il servizio: SQL Server (SQLEXPRESS).

Sono andato nella cartella locale (C: \ Users \ Me \ Desktop \ Backup) e ho aggiunto "NT Service \ MSSQL $ SQLEXPRESS" come utente per dare le autorizzazioni di scrittura.


0

Ciao, devi cambiare la query da:

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

per

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

Devi aggiungere una N davanti al percorso per me funziona.


0

Nel mio caso, ho dimenticato di nominare il file di backup e continuava a darmi lo stesso errore di autorizzazione: /

TO DISK N'{path}\WRITE_YOUR_BACKUP_FILENAME_HERE.bak'

0

Ho risolto lo stesso problema con i seguenti 3 passaggi:

  1. Conservo il mio file di backup in un altro percorso di cartella che ha funzionato correttamente.
  2. Visualizza diverse schede di sicurezza due cartelle (come sotto l'immagine).
  3. Autorizzazione alla modifica nella cartella della scheda di sicurezza che non ha funzionato correttamente.

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.