Impossible d'ouvrir le périphérique de sauvegarde. Erreur du système d'exploitation 5

139

Vous trouverez ci-dessous la requête que j'utilise pour sauvegarder (créer un .bak ) ma base de données.

Cependant, chaque fois que je l'exécute, je reçois toujours ce message d'erreur:

Msg 3201, niveau 16, état 1, ligne 1
Impossible d'ouvrir le périphérique de sauvegarde 'C: \ Users \ Me \ Desktop \ Backup \ MyDB.Bak'. Erreur du système d'exploitation 5 (l'accès est refusé.).

Msg 3013, niveau 16, état 1, ligne 1
BACKUP DATABASE se termine anormalement.

Voici ma requête:

BACKUP DATABASE AcinsoftDB
TO DISK = 'C:\Users\Me\Desktop\Backup\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';
Smiley
la source
Eh bien, le message d'erreur est assez clair, n'est-ce pas? Sous quel utilisateur le programme est-il exécuté? Le fichier bak existe-t-il? Pouvez-vous y accéder manuellement?
Pekka
1
Doit-on supposer que c'est pour SQL Server à partir du chemin du fichier, puisque vous n'avez pas mis le produit dans les balises ou le titre?
Powerlord
J'ai pu exécuter cette requête avant de reformater mon ordinateur portable si cela peut aider. C'est SQL Server 2008 et je cours en tant qu'administrateur. Le fichier bak n'existe pas car je suis en train de le créer avec cette requête.
Smiley
@Smiley Face: Vous devez lire le fichier SQL via votre réseau local et non via votre réseau. Cela signifie donc que vous devrez d'abord déplacer le fichier SQL du réseau vers votre lecteur local et le restaurer.
mrjimoy_05
sqlbak.com/blog/…
Shiwangini

Réponses:

235

Ouais, je viens de marquer celui-ci.

Regardez dans les services Windows. Démarrer> Administration> Services

Recherchez le service dans la liste appelée: SQL Server (MSSQLSERVER) recherchez la colonne «Ouvrir une session en tant que» (vous devez l'ajouter s'il n'existe pas dans la liste).

C'est le compte dont vous avez besoin pour donner des autorisations sur le répertoire, faites un clic droit dans l'explorateur> propriétés> Partages (et sécurité)

REMARQUE : n'oubliez pas d'accorder des autorisations au répertoire réel ET au partage si vous vous déplacez sur le réseau.

Appliquez et attendez que les autorisations se propagent, réessayez la sauvegarde.

REMARQUE 2 : si vous effectuez une sauvegarde sur le réseau et que votre SQL s'exécute en tant que «service local», vous avez des problèmes ... vous pouvez essayer d'attribuer des autorisations ou il peut être plus facile de sauvegarder localement et xcopy en dehors de SQL Server ( une heure plus tard).

REMARQUE 3 : si vous exécutez en tant que service réseau, la machine distante ne reconnaîtra PARFOIS pas le service réseau sur votre serveur SQL. Si tel est le cas, vous devez ajouter des autorisations pour l'ordinateur lui-même, par exemple. MyServer $.

Robin Vessey
la source
20
Les permissions / add / advanced n'ont pas trouvé l'utilisateur dans la liste, mais j'ai collé dans "NT Service \ MSSQLSERVER" et cela a fonctionné comme un champion.
Mark A
3
L'ajout de l'autorisation «tout le monde» à un dossier couvre-t-il cela?
DevDave
3
Cela dépend, si c'est le vrai public non authentifié, alors oui. Si c'est le "tout authentifié", alors le SERVICE LOCAL sur une machine distante ne sera généralement pas admissible ... mais voulez-vous vraiment donner accès à tout le monde, pour nous, c'est une infraction quasiment limogeable.
Robin Vessey
1
Cela n'a pas fonctionné pour moi, et je ne fais que sauvegarder sur C: \ temp \. L'écran des autorisations de dossier ne reconnaîtrait tout simplement pas l'ouverture de session utilisée par le service NT Service \ MSSQLSERVER , même lors du collage comme @Mark A suggéré. Existe-t-il un bon compte alternatif à utiliser pour ce service?
MGOwen
8
A travaillé pour moi, excellente solution! J'utilise SQL Server Express 2014, vous devez donc donner l'autorisation d'écriture à 'NT Service \ MSSQL $ SQLEXPRESS'.
mikhail-t
11

Accédez au dossier du serveur SQL dans le menu Démarrer et cliquez sur les outils de configuration Sélectionnez le gestionnaire de configuration SQL Server Sur les services de serveur SQL, sur l'instance souhaitée, modifiez (Ouvrir une session en tant que) sur le système local

Abuleen
la source
7

Le compte de service SQL Server n'a pas les autorisations d'écrire dans le dossier C:\Users\Kimpoy\Desktop\Backup\

Martin Smith
la source
22
comment donner au compte de service SQL Server des autorisations pour accéder à ce dossier? :)
Smiley
6

J'ai également eu ce problème récemment, mais j'exécutais le travail de sauvegarde à partir du serveur A mais la base de données sauvegardée était sur le serveur B vers un partage de fichiers sur le serveur C.Lorsque l'agent sur le serveur A dit au serveur B d'exécuter une sauvegarde t -sql, c'est en fait le compte de service sous lequel sql s'exécute sur le SERVER B qui tente d'écrire la sauvegarde sur le serveur C.

Rappelez-vous simplement que c'est le compte de service du serveur SQL exécutant la commande BACKUP DATABASE qui nécessite des privilèges sur le système de fichiers, pas sur l'agent.

Jason
la source
4

J'étais juste en train de vivre ça moi-même. Je m'étais assuré que mon utilisateur de connexion MSSQLSERVER avait, full accessmais cela posait toujours des problèmes. Cela n'a fonctionné qu'une fois que j'ai déplacé la destination à la racine de C. Plus important encore, hors d'un dossier utilisateur (même si j'avais un partage avec des autorisations complètes - même essayé "Tout le monde" comme test).

Je ne sais pas si je considère mon problème comme "résolu", mais il "fonctionne".

Juste un FYI pour tous les autres utilisateurs qui rencontrent ce fil.

DNK
la source
1
Je pense que cela est causé par les domaines d'entreprise qui ont des chemins utilisateur résidant sur des lecteurs réseau afin qu'ils soient accessibles par l'utilisateur de manière transparente, quelle que soit la machine à laquelle il se connecte. Telle que cette situation: superuser.com/a/730519
Bon
@Bon Merci! Cela a réglé le problème pour moi. Le chemin sur lequel j'avais le fichier de sauvegarde était en fait un chemin réseau.
JonM
4

Je rencontre le même problème avec SQL Express 2014 SP1 sous Windows 10.

Solution qui fonctionne

  1. Ouvrir le service en tapant Services
  2. Localisez et ouvrez le serveur SQL (SQLExpress)
  3. Accédez à l'onglet LogOn
  4. Choisissez le compte système local (vérifiez également si les services autorisent l'interaction avec le bureau)
  5. Cliquez sur OK . Arrêtez le service. Redémarrez le service.
  6. Problème résolu
Vikas Sawarkar
la source
3

Pour savoir quel utilisateur vous devez autoriser pour effectuer le processus de restauration, vous pouvez suivre les étapes suivantes:

Vous devez vous rendre sur votre serveur sur lequel SQL Server est installé. Rechercher le gestionnaire de configuration SQL Server

entrez la description de l'image ici

Ensuite, vous devez aller dans "Services SQL Server"

entrez la description de l'image ici

Sous votre instance SQL Server (MSSQLSERVER), il y aura un compte avec la colonne "Connexion en tant que", dans mon cas, il s'agit de NT Service \ MSSQLSERVER .

C'est le compte que vous devez ajouter sous l'onglet Sécurité de votre emplacement .bak source et donner à cet utilisateur les autorisations "Lire" pour que le fichier de sauvegarde puisse être lu.

Supposons que votre fichier de sauvegarde soit présent dans le dossier «D: \ Shared», vous devez alors donner des autorisations comme celle-ci:

entrez la description de l'image ici

Raghav
la source
2

J'ai eu un problème similaire. J'ai ajouté des autorisations d'écriture au fichier .bak lui-même et à mon dossier dans lequel j'écrivais la sauvegarde pour l'utilisateur du SERVICE RÉSEAU. Pour ajouter des autorisations, cliquez avec le bouton droit sur le fichier / répertoire que vous souhaitez modifier, sélectionnez l'onglet Sécurité et ajoutez-y les utilisateurs / autorisations appropriés.

Eric Bernier
la source
1
qu'entendez-vous par approprié?
Steam
2

Voici ce que j'ai fait pour contourner le problème.

1) Aller à la sauvegarde

2) Supprimez le chemin du fichier de destination sur le disque

3) Cliquez sur Ajouter

4) Dans la case à cocher Nom de fichier: tapez manuellement le nom de la sauvegarde après .. \ backup comme ci-dessous où Yourdb.bak est le nom de la sauvegarde de la base de données

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

5) Cliquez sur OK

J'espère que cela t'aides!

dpen82
la source
2

L'une des raisons pour lesquelles cela se produit est que vous exécutez votre service MSSQLSERVER sans utiliser de système local. Pour résoudre ce problème, procédez comme suit.

  1. Exécution ouverte à l'aide de Windows + R
  2. Tapez services.msc et une boîte de dialogue de services s'ouvrira
  3. Rechercher SQL Server (MSSQLSERVER)
  4. Faites un clic droit et cliquez sur les propriétés.
  5. Aller à l'onglet Connexion
  6. Sélectionnez le compte système local et cliquez sur «Appliquer» et «OK»
  7. Cliquez sur le lien Arrêter dans le panneau de gauche en sélectionnant "SQL Server (MSSQLSERVER)" et redémarrez-le une fois complètement arrêté.
  8. Profitez de votre sauvegarde.

J'espère que cela vous aide bien, comme cela a été le cas pour moi. À votre santé!

Gaurav Amatya
la source
1

Je sais que ce n'est pas une solution exacte, mais l'utilisation de chemins de lecteur externes résout ce problème.

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

SQL Server ne peut pas accéder (écrire) la sauvegarde à l'emplacement spécifié.

Vous devez d'abord vérifier le compte de service sur lequel le serveur SQL est en cours d'exécution. Cela peut être fait en utilisant Configuration Manager ou Services.msc.

ou

Utilisez la requête ci-dessous:

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;

Maintenant, regardez la colonne service_account et notez-la.

Accédez à l'emplacement où vous essayez d'effectuer la sauvegarde. Dans votre cas: C: \ Users \ Me \ Desktop \ Backup

Clic droit -> Propriétés -> Sécurité ->

Ajoutez le compte de service et fournissez des autorisations de lecture / écriture. Cela résoudra le problème.

Ramakant Dadhichi
la source
0

Msg 3201, niveau 16, état 1, ligne 1 Impossible d'ouvrir le périphérique de sauvegarde «C: \ Backup \ Adventure_20120720_1024AM.trn». Erreur du système d'exploitation 5 (l'accès est refusé.). Msg 3013, niveau 16, état 1, ligne 1 BACKUP LOG se termine anormalement.

J'ai vérifié le dossier de sauvegarde sur le lecteur C, le nouveau compte de service dispose-t-il ou non d'une autorisation d'accès de contrôle total?, J'ai réalisé que le compte de service "Test \ Kiran" ne dispose pas de l'autorisation de sécurité de contrôle total.

Veuillez suivre les étapes ci-dessous pour donner un contrôle total au compte de service:

  1. Allez sur le lecteur C, faites un clic droit sur le dossier de sauvegarde.
  2. Sélectionnez l'onglet Sécurité.
  3. Cliquez sur le bouton Modifier, une nouvelle fenêtre s'ouvrira.
  4. Cliquez sur le bouton Ajouter et entrez le compte d'utilisateur Test \ Kiran et cliquez sur le bouton Vérifier le nom, cela validera que l'utilisateur entré est existant ou non, s'il existe, il affichera l'utilisateur dans la fenêtre, sélectionnez OK.
  5. Sélectionnez le nom d'utilisateur saisi et cochez la case Contrôle total sous Autoriser.
user2459051
la source
0

Veuillez vérifier l'accès aux lecteurs, créez d'abord un dossier et allez dans les propriétés du dossier,

Vous pouvez trouver l'onglet de sécurité, cliquez dessus pour vérifier si votre identifiant d'utilisateur a l'accès ou non.

si vous ne trouvez pas votre identifiant, veuillez cliquer sur le bouton d'ajout et donner un nom d'utilisateur avec un accès complet.

user2703575
la source
0

Partagez ce dossier et utilisez le chemin UNC, par exemple: \ pc \ backups \ mydb.bak

Ensuite, vous pouvez arrêter le partage.

Pas très élégant, mais cela résout tous les problèmes d'autorisations (vous devez également donner des autorisations pour partager, comme mentionné ci-dessus)

Gennady G
la source
0

J'ai rencontré ce problème lorsque le fichier .BAK était temporairement stocké dans un dossier chiffré avec BitLocker. Il a conservé le cryptage après avoir été déplacé vers un autre dossier.

Le compte SERVICE RÉSEAU n'a pas pu déchiffrer le fichier et a donné ce message d'erreur très informatif.

La suppression du chiffrement BitLocker (en décochant «Crypter le contenu pour sécuriser les données» dans les propriétés du fichier) sur le fichier .BAK a résolu le problème.

Eric J.
la source
0

J'ai la même erreur. Les modifications suivantes m'ont aidé à résoudre ce problème.

J'ai dû vérifier Server Manager-> Tool-> Services et trouver l'utilisateur (colonne "Log On As") pour le service: SQL Server (SQLEXPRESS).

Je suis allé dans le dossier local (C: \ Users \ Me \ Desktop \ Backup) et j'ai ajouté "NT Service \ MSSQL $ SQLEXPRESS" en tant qu'utilisateur pour donner les autorisations d'écriture.

Hiren Parghi
la source
0

Salut, vous devez modifier la requête de:

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

à

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

Vous devez ajouter un N devant le chemin fonctionne pour moi.

Robert Peter Bronstein
la source
0

Dans mon cas, j'ai oublié de nommer le fichier de sauvegarde et il a continué à me donner la même erreur d'autorisation: /

TO DISK N'{path}\WRITE_YOUR_BACKUP_FILENAME_HERE.bak'
Monsieur Brigante
la source
0

J'ai résolu le même problème avec les 3 étapes suivantes:

  1. Je stocke mon fichier de sauvegarde dans un autre chemin de dossier qui a bien fonctionné.
  2. Voir différents de l'onglet de sécurité deux dossiers (comme l'image ci-dessous).
  3. Modifier l'autorisation dans le dossier de l'onglet de sécurité qui ne fonctionne pas correctement.

entrez la description de l'image ici

Mohsen Najafzadeh
la source